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