jvm幸存者空间

yhuiod9q  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(263)

我目前正在为位于法国的一家大型能源管理公司对许多java应用程序进行代码审计。
我使用了很多工具来审核代码(我甚至编写了一个特定的解析器,因为我无法编译代码……)。对于性能问题(审计的一个方面),我使用 dynaTrace 它告诉我 susrvivor 空间完全是空的。
除此之外 Eden space 从来没有垃圾收集,这激起了大量的“停止世界gc”的终身空间。这个 Enden space 是1gb空间, survivors 是300mb tenured 是2.8gb。
你能帮我解释一下这种奇怪的行为吗?提前谢谢。

qmelpv7a

qmelpv7a1#

根据这篇帖子:https://stackoverflow.com/a/39933015/6162023
那么,如果物体的尺寸更小(不是很大),是否会有一个场景让物体直接从伊甸园复制到旧世界呢?
如果你使幸存者的空间足够小,每次都能触发一个完整的集合,那么这些物体将从伊甸园变成终身。
在您的例子中,如果代码包含内存泄漏(这是最可能的情况),如果泄漏足够大,一个较小的gc将填满您的所有幸存者空间,那么对象将直接移动到旧gen(tenured)空间。

相关问题