【发布时间】:2018-07-04 04:07:07
【问题描述】:
我假设年轻代中的对象必须经过 15 次次要 GC(最多 15 次)才能提升到老年代或老年代。
new threshold是什么意思,它对JVM年轻代GC或Minor GC有何影响?
这是否意味着年轻代不够大,无法让 JVM 对对象执行 15 次 GC?
在下面的例子中,新的阈值是 10。这是否意味着我必须增加堆大小,或者特别是在年轻代上?
Desired survivor size 121634816 bytes, new threshold 10 (max 15)
PSAdaptiveSizePolicy::compute_eden_space_size: costs minor_time: 0.004921 major_cost: 0.047628 mutator_cost: 0.947450 throughput_goal: 0.990000 live_space: 330899520 free_space: 1115684864 old_eden_size: 419430400 desired_eden_size: 436207616
AdaptiveSizePolicy::survivor space sizes: collection: 28 (125829120, 113246208) -> (125829120, 121634816)
AdaptiveSizeStop: collection: 28
[PSYoungGen: 421856K->10080K(532480K)] 785165K->373389K(1269760K), 0.0312765 secs] [Times: user=0.25 sys=0.00, real=0.03 secs]
2018-07-04T02:09:01.886+0800: 359.263: [GC (Allocation Failure) AdaptiveSizePolicy::update_averages: survived: 4587536 promoted: 0 overflow: false
AdaptiveSizeStart: 359.286 collection: 29
avg_survived_padded_avg: 111951304.000000 avg_promoted_padded_avg: 43516000.000000 avg_pretenured_padded_avg: 41.070663 tenuring_thresh: 11 target_size: 113246208
【问题讨论】:
-
除非您遇到 GC 问题,否则您不应该追逐实现级别的统计信息,它应该是自我调整的