-
Enhancement
-
Resolution: Fixed
-
P4
-
17
-
b18
-----------
Improve G1 Full GC by skip compaction for regions with high survival ratio.
Backgroud
-----------
There are 4 steps in full gc of G1 GC.
- mark live objects
- prepare forwardee
- adjust pointers
- compact
When full gc occurs, there may be very high percentage of live bytes in some regions. For these regions, it's not efficient to compact them and better to skip them, as there are little space to save but many objects to copy.
Description
-----------
We enhance the full gc implementation for the above situation through following steps:
- accumulate live bytes of every hr in mark phase; (already done by
- skip adding regions with high survial ratio, and set the region with high survival ratio as pinned in _region_attr_table during prepare phase;
- nothing special is done in adjust phase, regions with high survial ratio are skipped because of pin setting in the above step;
- nothing special is done in compact phase, regions with high survival ratio are skipped because these regions are skipped when adding regions to compaction set in the prepare phase;
VM options related
-----------
- MarkSweepDeadRatio: we reuse this exising vm option to indicate the high survial ratio threhold (100-MarkSweepDeadRatio) in G1.
- default value of MarkSweepDeadRatio: 5
Test
-----------
- specjbb2015: no regression
- dacapo: (Attachment dacapo.v3.png is the dacapo h2 full gc pause.)
- 95% of full gc pauses: 10%-19% improvement.
- 5% of full gc pauses: 1.2% improvement.
- 0.1% of full gc pauses: -6.16% improvement.
$ java -Xmx1g -Xms1g -XX:ParallelGCThreads=4 -Xlog:gc*=info:file=gc.log -jar dacapo-9.12-bach.jar --iterations 5 --size huge --no-pre-iteration-gc h2
- is blocked by
-
JDK-8263495 Gather liveness info in the mark phase of G1 full gc
-
- Resolved
-
-
JDK-8264783 G1 BOT verification should not verify beyond allocation threshold
-
- Resolved
-
- relates to
-
JDK-8265082 test/hotspot/jtreg/gc/g1/TestG1SkipCompaction.java fails validate-source
-
- Closed
-
-
JDK-8265437 G1: Add compaction summary log message
-
- Open
-
-
JDK-8264987 G1: Fill BOTs for Survivor-turned-to-Old regions in full gc
-
- Resolved
-
-
JDK-8265436 G1: Improve gc+phases log output during full gc
-
- Resolved
-
-
JDK-8265259 G1: Fix HeapRegion::block_is_obj for unloading class in full gc
-
- Resolved
-