RFR: 8357445: G1: Time-Based Heap Uncommit During Idle Periods
Monica Beckwith
mbeckwit at openjdk.org
Wed Jul 9 20:15:29 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 virtual thread support
- 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.
-------------
Commit messages:
- Fix trailing whitespace errors
- JDK-8357445: G1: Time-Based Heap Uncommit During Idle Periods
Changes: https://git.openjdk.org/jdk/pull/26207/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26207&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8357445
Stats: 6178 lines in 21 files changed: 1276 ins; 4892 del; 10 mod
Patch: https://git.openjdk.org/jdk/pull/26207.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/26207/head:pull/26207
PR: https://git.openjdk.org/jdk/pull/26207
More information about the hotspot-dev
mailing list