RFR: 8357445: G1: Time-Based Heap Uncommit During Idle Periods [v10]
Monica Beckwith
mbeckwit at openjdk.org
Fri Oct 17 05:19:03 UTC 2025
> **Implements:** https://bugs.openjdk.org/browse/JDK-8357445
>
> Implement time-based heap uncommit for G1 during idle periods.
>
> Key changes:
> - Added G1HeapEvaluationTask for periodic heap evaluation
> - Switch from G1ServiceTask to PeriodicTask for improved scheduling
> - Implemented time-based heap sizing policy with configurable uncommit delay
> - Added region activity tracking with last access timestamps
> - Integrated VM_G1ShrinkHeap operation for safe heap shrinking
> - Added new G1 flags: G1UseTimeBasedHeapSizing, G1TimeBasedEvaluationIntervalMillis, G1UncommitDelayMillis, G1MinRegionsToUncommit
> - Added 'sizing' log tag for heap sizing operations
>
> Comprehensive Test Coverage:
> - Enhanced TestG1RegionUncommit: minimum heap boundaries, concurrent allocation/uncommit scenarios
> - Enhanced TestTimeBasedHeapSizing: humongous object handling, rapid allocation cycles, edge cases
> - Enhanced TestTimeBasedRegionTracking: concurrent region access, lifecycle transition validation
> - Enhanced TestTimeBasedHeapConfig: parameter boundary values, small heap configurations
>
> This ensures time-based heap uncommit works correctly while maintaining all safety guarantees and test expectations.
Monica Beckwith has updated the pull request incrementally with two additional commits since the last revision:
- Fix compilation errors after master merge
- Fix syntax error in g1CollectedHeap.cpp (extra closing brace)
- Update API call from short_term_pause_time_ratio() to short_term_gc_time_ratio()
These fixes resolve compilation issues that occurred after merging with
upstream master due to API changes in the OpenJDK codebase.
- 8357445: Address feedback for G1 time-based heap sizing
- Fix indentation in log_debug statement in shrink_helper (suggested by @tschatzl)
- Change terminology from 'inactive' to 'idle' throughout time-based heap sizing
- Update flag descriptions in g1_globals.hpp to use 'idle' terminology
- Fix remaining trailing whitespace in test files
Addresses all outstanding review comments from @tschatzl
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/26240/files
- new: https://git.openjdk.org/jdk/pull/26240/files/504e6d21..c17f5938
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=26240&range=09
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=26240&range=08-09
Stats: 44 lines in 8 files changed: 5 ins; 5 del; 34 mod
Patch: https://git.openjdk.org/jdk/pull/26240.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/26240/head:pull/26240
PR: https://git.openjdk.org/jdk/pull/26240
More information about the hotspot-dev
mailing list