gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:08:21 24 4
gpt4 key购买 nike

我们正在对应用程序进行负载测试,一段时间后,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 的堆空间,但在实际使用中是否也需要这个空间?我担心将其部署到生产中时可能会出现内存泄漏。或者负载测试中的负载导致应用程序的内存缓存达到稳定状态,而不会在生产中重现。

作为一般规则,堆接近满是一件坏事,因此增加堆可能是可取的。您的应用程序的性能似乎并未受到影响,但您可能正处于“风口浪尖”。

<小时/>

I thought that once old gen utilization is above certain level, GC will try to free/compact old gen area and if nothing is freed it would either fail with OOM and start crazy full GC cycles just before it.

我怀疑监测报告可能会误导您。如果完整的 GC 周期确实没有回收任何东西,我预计行为会有所不同。

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

关于java - 100%老一代——这是一个问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27415368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com