2016-04-06 10 views
0

У нас есть несколько команд, в которых работают серверные компоненты в одной JVM.Идентификация памяти компонентов в JVM

При возникновении проблемы с памятью нам необходимо знать, сколько памяти было выполнено каждым компонентом (или кто виноват в OOME :-)).

Есть ли общая техника, которая может помочь определить использование памяти каждого компонента?

Я знаю о дампах памяти и их инструментах анализа, но бывают случаи, когда анализ очень сложный из-за сложных графов и тому подобного. Мне было интересно, есть ли какие-то передовые методы, такие как частные кучи или эффективный способ отслеживания каждой памяти компонента.

+0

Что вы подразумеваете под «компонентом»? –

+0

Если ваш ссылочный график очень сложный, это должен быть предупреждающий знак. – biziclop

+0

В компонентах я имею в виду разные аппликативные части приложения. @Kedar Mhaswade –

ответ

0

Я хотел бы использовать профайлер памяти, как в Flight Recorder, который встроен в систему.

Это может дать вам перерыв вниз использования памяти из крупнейших пользователей. Я бы работал в этом списке, чтобы увидеть, где большая часть памяти сохраняется.

+1

Запуск виртуальной машины с помощью '-XX: + HeapDumpOnOutOfMemoryError' также весьма полезен, особенно если утечка памяти не так легко воспроизводится. – biziclop

+0

@biziclop Я также склонен увеличивать размер кучи, хотя я бы уменьшил его для меньшего дампа кучи. –