2012-02-06 3 views
18

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

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

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

Заранее спасибо.

+0

Вы пробовали работает [FindBugs] (HTTP : //findbugs.sourceforge.net) через источник? Я нахожу это довольно эффективным при идентификации кода, который может вызвать утечку памяти. – Jivings

+0

Спасибо за предложение - но две вещи: (1) Мне снова и снова говорили, что FindBugs хорош для NullPointerExceptions, но не утечки памяти, и, что более важно, (2) я действительно хочу познакомиться с jvisualvm, поэтому, если это явно не является правильным инструментом для этой работы, мне интересно узнать, как он используется в качестве диагностического инструмента. Еще раз спасибо за хорошее предложение! – IAmYourFaja

+2

Одна мелочь: Инструменты/Плагины/Доступные плагины - установка Visual GC - плагин показывает лучший график вашей памяти кучи и статуса GC. – coolcfan

ответ

23

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

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

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

+0

MAT также может принимать кучу сваливания без VisualVM – Chin

Смежные вопросы