Подтвердить что ты не робот

Как найти утечки памяти с помощью visualvm

Я подозреваю, что у нас есть большая утечка памяти в нашем мосте подключения ActiveMQ - мы наблюдаем типичные шаблоны утечки памяти (приложение загружается нормально, замедляется, если оно работает в течение длительных периодов времени или перезапускается снова и снова в течение коротких периодов времени времени). Я искал современные передовые методы поиска утечек памяти Java, и многие разработчики, похоже, отказываются от традиционных инструментов, таких как jhat/jmap вместо нового (er) jvisualvm.

После запуска этого инструмента (и проводя несколько часов на чтение его учебника), я могу использовать снимки профилировщика как для процессора, так и для памяти.

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

Спасибо заранее.

4b9b3361

Ответ 1

Анализ утечки памяти с помощью visualvm не так прост. У него есть инструмент/плагин под названием "пробник". Это можно использовать для выборки памяти или процессора. Вы можете делать снимок с регулярным интервалом и искать возможные утечки. Вот некоторые сведения о том, как его использовать. Получено из быстрый поиск

Более эффективным способом будет получение дампа кучи (скажем, когда приложение замедляется или когда OOM происходит). VisualVM поможет вам взять heapdump (используя Дамп кучи на вкладке Монитор)

Этот файл может быть проанализирован MAT - Некоторые подробности здесь, на Как анализировать файл .hprof? и http://memoryanalyzer.blogspot.in/