不使用JVM Survivor Spaces

时间:2019-02-04 08:03:03

标签: java garbage-collection dynatrace

我目前正在对位于法国的主要能源管理部门的许多Java应用程序进行代码审核。

我使用了许多工具来审核代码(我什至编写了特定的解析器,因为我无法编译代码...)。对于性能问题(审计的方面之一),我使用了dynaTrace,它向我表明susrvivor空格是完全空白的。

此外,Eden space从未被垃圾收集,这在使用权空间上引起大量“停止世界GC”。 Enden space是1GB的空间,survivors是300MB,而tenured是2.8GB。

您能帮我找到一种奇怪行为的解释吗?预先感谢。

1 个答案:

答案 0 :(得分:2)

根据此帖子:https://stackoverflow.com/a/39933015/6162023

  
    

因此,如果对象的尺寸较小(不是笨拙的),那么将有可能直接将对象从eden复制到Old。     ?

  
     

如果您将幸存者空间缩小到足以触发完整空间   每次收集时,这些对象都会从Eden到Tenured。

在您的情况下,如果代码包含内存泄漏(这是最可能的情况),如果泄漏足够大,以至于次要GC会填满您的所有Survivor空间,则将对象移动到Old Gen(终身使用)。