Java 8 GC Tutorials - Herong's Tutorial Examples - v1.03, by Dr. Herong Yang
Adaptive Size Policy Changed Eden Space
This section provides a tutorial on how Adaptive Size Policy used by the Parallel collector changed the eden space in the Young generation to meet the throughput goal.
In GC log example presented in the last tutorial, the Adaptive Size Policy of the Parallel collector suggested to keep Young generation size as is.
In this tutorial, we will look at GC log example from the test that suggests to change the survivor space size:
1181 1048576000 819745424 228830576 0.473: Application time: 0.0253453 seconds UseAdaptiveSizePolicy actions to meet *** throughput goal *** GC overhead (%) Young generation: 17.09 (attempted to grow) Tenured generation: 0.00 (no change) -- Current throughput is 82.91% = 100% - 17.09% Tenuring threshold: (attempted to decrease to balance GC costs) = 6 {Heap before GC invocations=6 (full 0): PSYoungGen total 409600K, used 223451K [... eden space 204800K, 99% used [0x2a000000,0x367f4c20,0x36800000) from space 204800K, 9% used [0x36800000,0x37a42150,0x43000000) to space 20480K, 0% used [0x4e400000,0x4e400000,0x4f800000) ParOldGen total 614400K, used 16K [... 0.474: [GC (Allocation Failure) AdaptiveSizePolicy::update_averages: survived: 19136864 promoted: 0 overflow: false AdaptiveSizeStart: 0.484 collection: 6 avg_survived_padded_avg: 20747726.000000 avg_promoted_padded_avg: 3854.254150 avg_pretenured_padded_avg: 0.000000 tenuring_thresh: 5 target_size: 20971520 -- Suggested to set survivor space to 20971520 PSAdaptiveSizePolicy::compute_eden_space_size limits: desired_eden_size: 419430400 old_eden_size: 209715200 eden_limit: 398458880 cur_eden: 209715200 max_eden_size: 398458880 avg_young_live: 18794080 -- Suggested to increase "eden" space to 419430400 PSAdaptiveSizePolicy::compute_eden_space_size: costs minor_time: 0.174405 major_cost: 0.000000 mutator_cost: 0.825595 throughput_goal: 0.990000 live_space: 287229536 free_space: 419430400 old_eden_size: 209715200 desired_eden_size: 398458880 -- Suggested to increase "eden" space to 398458880 AdaptiveSizePolicy::survivor space sizes: collection: 6 (20971520, 209715200) -> (20971520, 20971520) -- Changed survivor spaces to (20971520, 20971520)! AdaptiveSizeStop: collection: 6 [PSYoungGen: 223451K->18688K(593920K)] 223467K->18704K(1208320K), 0.0105256 secs] Heap after GC invocations=6 (full 0): PSYoungGen total 593920K, used 18688K [... eden space 573440K, 0% used [0x2a000000,0x2a000000,0x4d000000) -- "eden" space increased from 204800K to 593920K! from space 20480K, 91% used [0x4e400000,0x4f640160,0x4f800000) -- "from" space decreased from 204800K to 20480K! to space 20480K, 0% used [0x4d000000,0x4d000000,0x4e400000) ParOldGen total 614400K, used 16K [... } 0.485: Total time for which application threads were stopped: 0.0111920 s
In this example, the "eden" space was increased from 204800K to 593920K based on the Adaptive Size Policy suggestion. It is trying to increase the application execution time to meet the throughput goal of 99%.
Table of Contents
Heap Memory Area and Size Control
JVM Garbage Collection Logging
Introduction of Garbage Collectors
Serial Collector - "+XX:+UseSerialGC"
►Parallel Collector - "+XX:+UseParallelGC"
Parallel Collector GC Log Message Format
"-XX:+PrintGCTaskTimeStamps" - Print GC Threads
"-XX:ParallelGCThreads=n" - # of Threads
Parallel Collector Stops Application for Minor/Major GC
PSYoungGen Collector Using Tenuring Age
Parallel Collector Changing NewRatio and SurvivorRatio
Parallel Collector Adaptive Size Policy
Adaptive Size Policy Log Messages
"-XX:+PrintAdaptiveSizePolicy" - Minor GC Report
Adaptive Size Policy Changed Survivor Space
►Adaptive Size Policy Changed Eden Space
Adaptive Size Policy for Best Latency
Adaptive Size Policy for Best Throughput
Concurrent Mark-Sweep (CMS) Collector - "+XX:+UseConcMarkSweepGC"
Garbage First (G1) Collector - "+XX:+UseG1GC"
Object References and Garbage Collection
Garbage Collection Performance Test Program
Performance Tests on Serial Collector
Performance Tests on Parallel collector
Performance Tests on Concurrent collector
Performance Tests on G1 collector