性能问答>为什么设置了SurvivorRatio=8,但是实际Eden与Survivor不是8:1:1>
4回复
4年前

为什么设置了SurvivorRatio=8,但是实际Eden与Survivor不是8:1:1



JDK 环境

1.png

JVM 参数

$JAVA -Xms1G -Xmx1G -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./tmp -XX:SurvivorRatio=8 -XX:-UseGCOverheadLimit -Dlogback.loglevel=INFO -Djava.io.tmpdir=./tmp

但是出现的情况
当 -XX:SurvivorRatio=8 时,Eden 与 Survivor 的比例却不是 8:1:1

2.png

如上图:
新生代:341 MB;老年代:683 MB ;比例正常 1:2;
新生代内:
Eden: 293.5 MB;From:24MB;To:23.5MB:
比例不正常:Eden 区接近为 86%,而 Survivor 分别为 7%;
比例不是 Eden:From Survivor:To Survivor = 8:1:1

诡异的是:我将 -XX:SurvivorRatio=6 ,调整为 6 时,如下图:
3.png

新生代内:
Eden: 274MB;From:34 MB;To:33 MB:
比例为 Eden:From Survivor:To Survivor = 8:1:1

请问有大佬们经历过这种情况吗?
是有额外的东西影响到了这个参数吗?实在费解。

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