Я запускаю JVisualVM (Windows XP, Sun Java 1.6.0.13, 32-разрядная клиентская виртуальная машина) для мониторинга удаленного приложения (Linux, Sun Java 1.6.0.07, 64-разрядная серверная виртуальная машина). Перед запуском фактического удаленного приложения я запускаю его на удаленной машине jstatd
, используя политику полного доступа:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
Затем я запускаю настоящее приложение с помощью командной строки.
java -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=3333
compileTest.Main
С клиентской машины я могу видеть удаленное приложение и отслеживать его. Я также могу сделать дамп потока и т. д. К сожалению, кнопка дампа кучи неактивна.
Как я могу получить дамп кучи из удаленно контролируемого приложения с помощью JVisualVM?
Я пытался использовать jConsole. С помощью jConsole можно создать удаленный дамп кучи с помощью операции com.sun.management.HotSpotDiagnostic dumpHeap. Я хочу, чтобы дамп был передан на сторону клиента и проанализирован с помощью инструментов, предоставляемых JVisualVM. Как я могу это сделать?