Анализатор памяти Eclipse - ошибка при попытке получить дамп кучи

Я пытаюсь получить дамп кучи с помощью Eclipse Memory Analyzer Tool (MAT). У меня работает сервер приложений Weblogic 10.3. Это ОС Windows XP с установленной 32-битной Java. Когда я пытаюсь получить дамп кучи с помощью MAT для процесса, в котором работает Weblogic, я получаю следующую ошибку:

Error creating heap dump. jmap exit code = 1
Exception in thread "main" java.io.IOException: Premature EOF
    at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:226)
    at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:88)
    at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:195)
    at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:162)
    at sun.tools.jmap.JMap.dump(JMap.java:224)
    at sun.tools.jmap.JMap.main(JMap.java:122)

Error creating heap dump. jmap exit code = 1
Exception in thread "main" java.io.IOException: Premature EOF
    at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:226)
    at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:88)
    at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:195)
    at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:162)
    at sun.tools.jmap.JMap.dump(JMap.java:224)
    at sun.tools.jmap.JMap.main(JMap.java:122)

Любая помощь приветствуется.

Спасибо, Сид


person Sid    schedule 18.05.2011    source источник


Ответы (2)


Вы можете попробовать использовать jmap, чтобы сохранить дамп и открыть его в MAT.

Используйте jps, чтобы получить идентификатор процесса (pid).

jmap -dump:live,format=b,file=myfile.hprof <processid-from-above>
person karmakaze    schedule 18.05.2011
comment
Спасибо за ваш ответ. Но jmap не работает в Windows. Я пытался использовать jConsole, но даже это создает проблемы. Есть ли другой способ получить живой дамп кучи? - person Sid; 19.05.2011
comment
Вы можете попробовать VisualVM или jVisualVM. Один поставляется с Java, а другой загружается отдельно. - person karmakaze; 19.05.2011
comment
Для справки в будущем, JMap работает в Windows и включен в JDK › 1.5 (я думаю). Вам необходимо установить JDK, а не только JRE (JDK — это комплект для разработки, в котором есть дополнительные инструменты). Затем вы должны перейти к bin установки JDK, чтобы запустить jmap. - person Ben; 12.01.2012
comment
У меня такая же проблема. Я смог использовать jmap, но получил только 20-мегабайтный дамп процесса, занимающего 1,3 ГБ памяти. Что-то не так. - person Skychan; 25.08.2015

Я столкнулся с той же проблемой в Windows, я решил открыть cmd.exe от имени администратора.

person Jarris    schedule 30.07.2020
comment
Что мне нравится в StackOverflow. Вопрос 9-летней давности может ожить. :) - person Sid; 30.07.2020