JVM Survivor Spaces не используются

В настоящее время я провожу аудит кода многих java-приложений для крупной энергетической администрации, расположенной во Франции.

Я использовал много инструментов для проверки кода (я даже написал специальный парсер, так как не могу скомпилировать код...). Для проблемы с производительностью (одна из сторон аудита) я использовал dynaTrace, и это показало мне, что susrvivor пространства полностью пусты.

Кроме того, Eden space никогда не подвергается сборке мусора, что провоцирует большое количество «остановить мировой сборщик мусора» на постоянном пространстве. Enden space занимает 1 ГБ, survivors — 300 МБ, а tenured — 2,8 ГБ.

Не могли бы вы помочь мне найти объяснение этому странному поведению? Заранее спасибо.


person ATN54    schedule 04.02.2019    source источник


Ответы (1)


Согласно этому сообщению: https://stackoverflow.com/a/39933015/6162023

Так будет ли когда-нибудь сценарий, чтобы объекты напрямую копировались из Эдема в Старый, если объекты меньше по размеру (не огромные)?

Если вы сделаете ячейки выживших достаточно маленькими, чтобы каждый раз запускать полную коллекцию, объекты перейдут из Эдема в Наемники.

В вашем случае, если код содержит утечку памяти (что является наиболее вероятным сценарием), если утечка достаточно велика, чтобы второстепенный GC заполнил все ваше пространство Survivor, тогда объекты перемещаются в пространство Old Gen (Tenured). сразу.

person Sofo Gial    schedule 04.02.2019