Repository navigation
share jdk11_ParallelGC_MinHeapFreeRatio
ceragon edited this page Mar 25, 2022
·
2 revisions
我确信 Jdk11 同样支持 ParallelGC,而且也支持 MinHeapFreeRatio 和 MaxHeapFreeRatio 参数。
以下代码摘取自 OpenJdk11
的源码 (源码链接)
,且源码位于 /src/hotspot/share/gc/parallel/psAdaptiveSizePolicy.cpp
size_t PSAdaptiveSizePolicy::calculated_old_free_size_in_bytes() const {
size_t free_size = (size_t)(_promo_size + avg_promoted()->padded_average());
// 老年代的空间占用
size_t live = ParallelScavengeHeap::heap()->old_gen()->used_in_bytes();
if (MinHeapFreeRatio != 0) {
size_t min_free = calculate_free_based_on_live(live, MinHeapFreeRatio);
free_size = MAX2(free_size, min_free);
}
if (MaxHeapFreeRatio != 100) {
size_t max_free = calculate_free_based_on_live(live, MaxHeapFreeRatio);
free_size = MIN2(max_free, free_size);
}
return free_size;
}我在 OpenJdk8
的源码(源码链接)
中找到了一模一样的方法,且源码位于 /hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp 。
因此我可以确认不同JDK版本的ParallelGC都可以正常使用 MinHeapFreeRatio 和 MaxHeapFreeRatio.
您提到了在 Jdk11 中,Min/MaxHeapFreeRatio 参数没有达到预期效果的问题。 因为我需要您提供一些 GC 日志,请在 JVM参数中增加以下内容
-Xlog:gc*=info,gc+ergo=trace:file=/path/gc.log:time,level,tags
[2022-03-03T22:51:30.359+0800][info ][gc,start ] GC(7) Pause Full (Ergonomics)
[2022-03-03T22:51:30.359+0800][info ][gc,phases,start] GC(7) Marking Phase
[2022-03-03T22:51:30.381+0800][info ][gc,phases ] GC(7) Marking Phase 22.090ms
[2022-03-03T22:51:30.381+0800][info ][gc,phases,start] GC(7) Summary Phase
[2022-03-03T22:51:30.381+0800][info ][gc,phases ] GC(7) Summary Phase 0.037ms
[2022-03-03T22:51:30.381+0800][info ][gc,phases,start] GC(7) Adjust Roots
[2022-03-03T22:51:30.382+0800][info ][gc,phases ] GC(7) Adjust Roots 0.697ms
[2022-03-03T22:51:30.382+0800][info ][gc,phases,start] GC(7) Compaction Phase
[2022-03-03T22:51:30.399+0800][info ][gc,phases ] GC(7) Compaction Phase 16.597ms
[2022-03-03T22:51:30.399+0800][info ][gc,phases,start] GC(7) Post Compact
[2022-03-03T22:51:30.400+0800][info ][gc,phases ] GC(7) Post Compact 1.349ms
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) psAdaptiveSizePolicy::major_collection_end: major gc cost: 0.622399 average: 0.311655
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) major pause: 41.128000 major period 24.951780
[2022-03-03T22:51:30.400+0800][debug][gc,ergo ] GC(7) AdaptiveSizeStart: collection: 8
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) old_gen_capacity: 139984896 young_gen_capacity: 61341696
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) PSAdaptiveSizePolicy::adjust_eden_for_throughput(is_full: 1, cur_eden: 52953088): mutator_cost 0.687408 major_gc_cost 0.311655 minor_gc_cost 0.000937
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) Scaled eden increment: 52953088 by 0.002998 down to 158755
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) Adjusting eden for throughput (avg 0.687408 goal 0.990000). desired_eden_size 53111843 eden delta 158755
[2022-03-03T22:51:30.400+0800][debug][gc,ergo ] GC(7) PSAdaptiveSizePolicy::compute_eden_space_size limits: desired_eden_size: 53111843 old_eden_size: 52953088 eden_limit: 52953088 cur_eden: 52953088 max_eden_size: 52953088 avg_young_live: 29150374
[2022-03-03T22:51:30.400+0800][debug][gc,ergo ] GC(7) PSAdaptiveSizePolicy::compute_eden_space_size: costs minor_time: 0.000937 major_cost: 0.311655 mutator_cost: 0.687408 throughput_goal: 0.990000
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) Minor_pause: 0.045541 major_pause: 0.060510 minor_interval: 46.839310 major_interval: 25.889906pause_goal: 18446744073709552.000000
[2022-03-03T22:51:30.400+0800][debug][gc,ergo ] GC(7) Live_space: 428859744 free_space: 105906176
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) Base_footprint: 268435456 avg_young_live: 29150374 avg_old_live: 131273920
[2022-03-03T22:51:30.400+0800][debug][gc,ergo ] GC(7) Old eden_size: 52953088 desired_eden_size: 52953088
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) PSAdaptiveSizePolicy::adjust_promo_for_throughput(is_full: 1, promo: 52953088): mutator_cost 0.687408 major_gc_cost 0.311655 minor_gc_cost 0.000937
[2022-03-03T22:51:30.400+0800][trace][gc,ergo ] GC(7) Scaled tenured increment: 21495808 by 0.997002 down to 21431362
[2022-03-03T22:51:30.401+0800][trace][gc,ergo ] GC(7) Adjusting tenured gen for throughput (avg 0.687408 goal 0.990000). desired_promo_size 74384450 promo_delta 21431362
[2022-03-03T22:51:30.401+0800][debug][gc,ergo ] GC(7) PSAdaptiveSizePolicy::compute_old_gen_free_space limits: desired_promo_size: 74384450 promo_limit: 52953088 free_in_old_gen: 7380776 max_old_gen_size: 139984896 avg_old_live: 132604120
[2022-03-03T22:51:30.401+0800][debug][gc,ergo ] GC(7) PSAdaptiveSizePolicy::compute_old_gen_free_space: costs minor_time: 0.000937 major_cost: 0.311655 mutator_cost: 0.687408 throughput_goal: 0.990000
[2022-03-03T22:51:30.401+0800][trace][gc,ergo ] GC(7) Minor_pause: 0.045541 major_pause: 0.060510 minor_interval: 46.839310 major_interval: 25.889906 pause_goal: 18446744073709552.000000
[2022-03-03T22:51:30.401+0800][debug][gc,ergo ] GC(7) Live_space: 430189952 free_space: 105906176
[2022-03-03T22:51:30.401+0800][trace][gc,ergo ] GC(7) Base_footprint: 268435456 avg_young_live: 29150374 avg_old_live: 132604120
[2022-03-03T22:51:30.401+0800][debug][gc,ergo ] GC(7) Old promo_size: 52953088 desired_promo_size: 52953088
[2022-03-03T22:51:30.401+0800][trace][gc,ergo ] GC(7) PSAdaptiveSizePolicy::check_gc_overhead_limit: promo_limit: 52953088 max_eden_size: 52953088 total_free_limit: 33320208 max_old_gen_size: 139984896 max_eden_size: 52953088 mem_free_limit: 3858759
[2022-03-03T22:51:30.401+0800][trace][gc,ergo ] GC(7) AdaptiveSizePolicy::old generation size: desired free: 113471488 used: 139587640 new size: 139984896 current size 139984896 gen limits: 139984896 / 524288
[2022-03-03T22:51:30.401+0800][trace][gc,ergo ] GC(7) Young generation size: desired eden: 52953088 survivor: 8388608 used: 52952120 capacity: 61341696 gen limits: 69730304 / 1572864
[2022-03-03T22:51:30.401+0800][debug][gc,ergo ] GC(7) AdaptiveSizeStop: collection: 8
[2022-03-03T22:51:30.401+0800][info ][gc,heap ] GC(7) PSYoungGen: 51711K->51711K(59904K)
[2022-03-03T22:51:30.401+0800][info ][gc,heap ] GC(7) ParOldGen: 136316K->136316K(136704K)
[2022-03-03T22:51:30.401+0800][info ][gc,metaspace ] GC(7) Metaspace: 4963K->4963K(1056768K)
[2022-03-03T22:51:30.401+0800][info ][gc ] GC(7) Pause Full (Ergonomics) 183M->183M(192M) 42.290ms
[2022-03-03T22:51:30.401+0800][info ][gc,cpu ] GC(7) User=0.14s Sys=0.00s Real=0.04s