RFR: 8357445: G1: Time-Based Heap Uncommit During Idle Periods [v4]
Ivan Walulya
iwalulya at openjdk.org
Thu Jul 17 12:40:00 UTC 2025
On Thu, 17 Jul 2025 01:50:59 GMT, Monica Beckwith <mbeckwit at openjdk.org> wrote:
>> **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 one additional commit since the last revision:
>
> 8357445: Remove redundant record_activity calls and leftover initialize call
>
> - Remove record_activity() from retirement methods as hr_clear() is always last
> - Remove leftover initialize() call since initialization moved to constructor
> - Remove unused G1 includes from vmOperations after moving VM_G1ShrinkHeap
src/hotspot/share/gc/g1/g1HeapEvaluationTask.hpp line 36:
> 34: // Time-based heap evaluation task that runs during idle periods.
> 35: // Uses PeriodicTask rather than G1ServiceTask due to build compatibility issues
> 36: // in JDK 25+. PeriodicTask's 10ms granularity is adequate for heap evaluation
Can you please elaborate on these "compatibility issues"
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26240#discussion_r2213223680
More information about the hotspot-gc-dev
mailing list