Могу ли я генерировать файл HPROF по своему желанию?
У меня есть java-процесс, который действует сомнительно. Я хотел бы посмотреть, что с помощью различных инструментов анализа HPROF.
Как я могу создать его на лету?
Ответ 1
Да. Вы можете сгенерировать hprof файл (содержащий использование памяти кучи) на лету, используя инструмент jmap, который поставляется с Sun Java VM:
jmap -dump: file = < имя_файлa > <pid>
Ответ 2
Вам нужно запустить Java-процесс с правильными аргументами, которые немного отличаются в зависимости от версии JVM. Затем отправьте сигнал QUIT в процесс для создания нового файла.
Выход обычно генерируется при выходе из ВМ, хотя это можно отключить, установив опцию "дамп при выходе" на "n" (doe = n). Кроме того, профиль создается при нажатии Ctrl-\или Ctrl-Break (в зависимости от платформы). В ОС Solaris и Linux профиль также генерируется при получении сигнала QUIT (kill -QUIT pid). Если Ctrl-1 или Ctrl-Break нажата несколько раз, в один файл сгенерированы несколько профилей.
Ответ 3
VisualVM может помочь вам разобраться в том, что делает ваш процесс, в том числе возможность произвольно заставлять дамп кучи на запущенном процессе.
Ответ 4
jconsole теперь имеет возможность создать дамп для текущего рабочего каталога приложения.
Подключитесь к экземпляру с поддержкой JMX
Перейдите в com.sun.management → HotspotDiagnostic → Operations