繁体   English   中英

100%的老一代-这是一个问题吗?

[英]100% old generation - is it an issue?

我们正在对应用程序进行负载测试,一段时间后AppDynamics报告红色的“ PS Old gen”为100% Full GC每10分钟运行一次。 内存的“当前利用率”在70-90%之间变化,这种情况持续了数小时,并且在OOM中从未失败。

我以为,一旦旧发电利用率超过一定水平,GC就会尝试释放/压缩旧发电区域,如果没有任何释放,它将因OOM失败而在其之前开始疯狂的完整GC周期。 但是我看不到这些。 该应用程序运行良好,旧发电机利用率为100%。

我们正在使用Oracle Java 7u14(64b,4个cpu内核,10gb RAM),并且JVM配置为

-XX:+UseParallelOldGC -Xmx4g

谢谢!

这是否真正取决于您的决定。

  • 一方面,每10分钟运行一秒钟的完整GC对于吞吐量而言不是一个重要问题。

  • 另一方面,完整的GC可能会在那一秒钟的窗口内显着减少响应时间。 但这可能与您的应用程序无关紧要。

我担心的是您的负载测试是否是现实的测试。 该应用程序似乎需要测试4Gb的堆空间,但在实际使用中是否也需要它? 我担心在将其部署到生产中时可能会出现内存泄漏。 或负载测试中的负载导致应用程序的内存中缓存达到稳态,而该状态将不会在生产中复制。

通常,堆快要接近满了是一件坏事,因此建议增加堆。 您的应用程序的性能似乎并未受到影响,但是您可能会“风头正劲”。


我以为,一旦旧发电利用率超过一定水平,GC就会尝试释放/压缩旧发电区域,如果没有任何释放,它将因OOM失败而在其之前开始疯狂的完整GC周期。

我怀疑监视报告可能会误导您。 如果整个GC周期实际上没有回收任何东西,我希望行为会有所不同。

尝试打开JVM GC日志消息,看看它们告诉您有关整个GC周期设法回收的内存量的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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