繁体   English   中英

GC(分配失败)[PSYoungGen]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM