性能问答>parallel 收集器的 yong gc 什么时候触发?>
1回复

parallel 收集器的 yong gc 什么时候触发?



之前发了个求助,点了 采纳。后续的留言估计大神看不到了。所以再发一个哈。

观察到的现象是:
有些机器的堆内存占用90%多才会触发yong gc
有些机器的堆内存60%多就触发yong gc

备注:在触发yong gc的时候,没有触发major gc

jvm配置如下:
1、jdk8
2、只配置了-Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=256m 别的没有特殊配置

我的理解如下,不知道对不对:

jdk8 默认应该是启用UseAdaptiveSizePolicy 自适应参数。

  1. 堆中各个区(eden、s0、s1、srurviror、old)的大小及晋升年龄会自动调整
  2. 这个 自适应 和 这两个参数也有关系: MaxGCPauseMillis(默认很大,可以忽略) 和 GCTimeRatio(默认99,即:不超过1%时间用于垃圾回收)。是不是说:
  • 对于60%就触发 yong gc 来说: jvm认为,内存如果再增长,就不能满足 GCTimeRatio了,所以就触发了yong gc
  • 对于90%才触发 yong gc来说: jvm认为、即使到了90%多,还能保证满足 GCTimeratio,所以这个时候触发yong gc也不晚
  1. 如果使用新生代 parallel 回收器 默认值,那么堆使用率到大百分之几进行回收,完全是jvm自己调整,可能30%就触发yong gc了,也可能 95% 才触发 yong gc。

不知道这样理解对不对。

2993 阅读
请先登录,查看1条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步