Способы, как получить кучу дампа от запуска tomcat 7

Я пробовал этот Получать кучу на JVM от Tomcat 6 но это не работает для меня, есть ли другие способы получить кучу дампа с сервера tomcat? Спасибо заранее!

Ответ 1

Самый простой способ получить кучу кучи - использовать jmap. На машине с java-процессом выполните команду jmap. Пример использования:

jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842

используйте jps, чтобы узнать java Pid.


Также вы можете сделать сброс кучи через jvisualvm. Вы можете подключиться к удаленному компьютеру через jmx или jstatd. Вы можете сделать heapdump и сохранить на удаленном компьютере.

Для анализа heapdumps вы можете посоветовать вам: MAT. Очень мощный инструмент, который позволяет вам быстро понять проблемы. Вы можете найти здесь хороший интро для MAT.


Если вы не хотите долго останавливать приложение, вы можете сделать двоичный дамп (Вы можете использовать gcore или gdb). И вы можете использовать jmap для анализа gdb dump. Более подробную информацию вы можете прочитать в блоге atlassian . Остерегайтесь .

Ответ 2

Другой способ, помимо "Кучи дампа" - кнопка jvisualvm через JMX-интерфейс. Этот способ даже позволяет указать, где хранить дамп.

подключиться к tomcat JMX-серверу с помощью jconsole или jvisualvm с JMX-плагином. Затем дошли до com.sun.managementHotSpotDiagnoticOperations. Рядом с dumpHeap заполните два параметра. Из документации оракула (см. здесь):

Параметры:

outputFile - системное имя файла

live - если true дамп только для живых объектов, то есть объектов, доступных из других

Затем нажмите dumpHeap и наблюдайте, как VM замораживается некоторое время во время записи дампа.

Ответ 3

Я рекомендую визуальную виртуальную машину http://visualvm.java.net/ Это все в одном инструменте, который может подключаться к tomcat, создавать и читать кучи дампов, создавать потоки дампа, процессора и памяти.

Если вы используете новый jdk 1.7, VisualVM уже упакован в вашу папку jdk.