求助>jvm minor gc 频率>
3回复
1月前

jvm minor gc 频率



jvm 年轻代 gc 一般的频率是多少, 多少秒发生一次minor gc , 耗时多久比较合适

我这里有一个配置24G的应用 -Xmx24g -Xms24g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=15 -XX:CMSInitiatingOccupancyFraction=70 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:ReservedCodeCacheSize=256m
-Xmn配置6G, 4-5s一次 minor gc, 耗时300-400ms
-Xmn配置2G, 2s左右一次 minor gc, 耗时110ms左右
-Xmn配置1G, 1s左右一次或两次 minor gc, 耗时70ms左右

哪种配置更合理, 有什么样的评判依据吗

588 阅读
请先登录,再评论

回复列表

abccba1月前

以60s来统计,1.12次gc,共耗时400*12ms 2.30次,共耗时3300ms 3.60次gc,60*70=4200ms,看起来第二种配置好一点

对于大内存的垃圾回收,jdk8下推荐G1,其次对于配置的合理性,应该针对于压测下来评估。

ferdi1月前

这个问题要具体问题具体分析,拷贝算法这个是一个典型的现象,空间大单次耗时就高,但是频次降低;这个最终是暂停时间和整体吞吐量的权衡,如果对暂停时间敏感的,那就需要缩小新生代空间,如果是整体吞吐量考虑,那就可以增大新生代空间,降低频率,而且随着空间增大耗时等比增长也说明存活的对象较多,可以适当的提前将这些对象晋升来减少ygc的压力;然后另一个方面可以设置-XX:ParallelGCThreads=n来增大ParNew的并发线程数以减小暂停时间。

1