[英]GC (Allocation Failure) [PSYoungGen]
最近,我们将代码从java7切换到了java8。 PSYoungGen每10分钟发生一次GC分配失败。 我们甚至尝试将-XX:NewSize和-XX:NewMaxSize切换到大约5GB(总堆大小为10GB)。 但是,即使在gc分配失败已被打印出来并且PSYoungGen几乎触发了大小(5GB)的情况下。 添加了一些日志:
[GC (Allocation Failure) [PSYoungGen: 3145728K->114922K(3670016K)] 3145728K->115026K(5767168K), 0.2511084 secs] [Times: user=0.26 sys=0.14, real=0.25 secs]
[GC (Allocation Failure) [PSYoungGen: 4443141K->125893K(4718592K)] 4443261K->126229K(6815744K), 0.2318927 secs] [Times: user=0.42 sys=0.22, real=0.24 secs]
在一个答案中:与之相关的Java GC(分配失败)我已经看到这是正常的行为,只是好奇地知道有什么方法可以克服这个问题? 谢谢。
我认为您可能正在设置的NewSize
会控制整个新一代(由伊甸园和幸存者空间组成)的大小,因此也许您的伊甸园的大小仍然不足以直接分配给新的大型对象(例如大字节[]。
我要问的是,即使您将新设置为5Gb
,我认为Oracle的文档建议SurvivorRatio
默认值为8
意味着大约有1.25Gb
的幸存者空间,剩下3.75 Gb
eden。 您是否可以分配大于或接近此大小的对象?
关于没有这样的日志,在您链接到OP中的答案中,已接受的答案将做出评论
“较早的JVM不会打印GC的原因,因为GC周期较小。
所以也许这一直在发生,而您直到现在才知道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.