Как я могу использовать Eclipse Memory Analyzer Tool для выгрузки кучи из запущенного процесса?
Я создал простое консольное приложение, которое я запускаю из Eclipse (щелкнув правой кнопкой мыши по файлу и выбрав команду "Запустить как приложение Java"). Я застрял там в спящем режиме, чтобы убедиться, что процесс все еще работает, когда я запускаю диалоговое окно дампа кучи Aquire. Я запускаю диалоговое окно, нажимаю кнопку Обновить, и в списке нет локальных процессов.
Я проверил журнал ошибок Eclipse, и он только сообщает, что у него были проблемы со списком процессов IBM VM (HPROF один настроен и работает нормально.)
Что я делаю неправильно?
2 ответа
Почему бы не создать дамп кучи из кода вашей программы?
https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java
Или когда это сталкивается с проблемами безопасности отсюда: создайте дамп кучи изнутри приложения, без HotSpotDiagnosticMXBean
Я использовал это, чтобы получить дамп кучи после фиксированного числа итераций в моих тестах JUnit, все, что осталось сделать, это открыть дампы в Eclipse MAT и найти причину утечки памяти:-(
Я столкнулся с той же проблемой, и после поиска в Google, я нашел это решение.
Укажите путь jdk в "Получить дамп заголовка" -> "Настроить..." -> Выбрать "HPROF jmap dump provider" -> "-jdkhome" -> speficy jdk path по умолчанию это должно быть "C:\Program Files\Java" \jdk1.8.0_102"или ваше местоположение jdk.
Я надеюсь, что это работает для вас.