Триггерный дамп 1,5-й виртуальной машины Java, работающей в Windows - PullRequest
5 голосов
/ 29 июня 2010

Я пытаюсь диагностировать проблему утечки памяти PermGen на сервере приложений Sun One 9.1. Для этого мне нужно получить дамп кучи процесса JVM. К сожалению, процесс JVM версии 1.5 работает в Windows. По-видимому, ни один из способов запуска дампа кучи не поддерживает эту настройку. Я могу заставить JVM сделать дамп кучи после того, как у него закончится память или когда он выключится, но мне нужно иметь возможность получать дампы кучи в произвольные моменты времени.

Два часто упоминаемых способа получения дампов кучи - либо использование jmap, либо использование HotSpotDiagnostic MBean. Ни один из них не поддерживает jvm 1.5 в Windows.

Есть метод, который я пропустил? Если есть способ программно запустить дамп кучи (без использования HotSpotDiagnostic MBean), это тоже подойдет ...

Если на самом деле это невозможно сделать в Windows, я думаю, мне придется прибегнуть к созданию виртуальной машины Linux и выполнить там отладку.

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 июня 2010

В Java6 была добавлена ​​новая опция горячей точки, -XX:-HeapDumpOnOutOfMemoryError, которая фактически была перенесена в Java5 JVM.

http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

Дамп кучи в файл при java.lang.OutOfMemoryError выбрасывается.Управляемость.(Представлено в обновлении 1.4.2 12, обновлении 5.0 7.)

Это очень удобно.JVM живет достаточно долго, чтобы выгрузить свою кучу в файл, а затем падает.

Конечно, это означает, что вам нужно ждать, пока утечка станет достаточно плохой, чтобы вызвать OutOfMemoryError.

Альтернативой является использование профилировщика, например YourKit .Это дает возможность сделать снимок кучи работающей JVM.Я считаю, что он все еще поддерживает Java5.

PS Вам действительно необходимо обновить до Java 6 ....

0 голосов
/ 29 июня 2010

Если это 1.5.0_14 или выше, вы можете использовать -XX:+HeapDumpOnCtrlBreak и нажать Ctrl-Break в консоли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...