2016-01-11 3 views
3

Моя jmap команда sudo -u flume /usr/java/jdk1.8.0_60/bin/jmap -F -dump:format=b,file=heap.hprof pid, А вот затмение мат не может открыть файл дампа и выбросить исключение.Матушка не может открыть файл дампа

 
java.lang.NullPointerException 
    at org.eclipse.mat.hprof.HprofParserHandlerImpl.resolveClassHierarchy(HprofParserHandlerImpl.java:587) 
    at org.eclipse.mat.hprof.Pass2Parser.readInstanceDump(Pass2Parser.java:205) 
    at org.eclipse.mat.hprof.Pass2Parser.readDumpSegments(Pass2Parser.java:159) 
    at org.eclipse.mat.hprof.Pass2Parser.read(Pass2Parser.java:89) 
    at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:94) 
    at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:222) 
    at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:126) 
    at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:145) 
    at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:83) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 

Вот моя обстановка.

 
java version "1.8.0_60" 
Java(TM) SE Runtime Environment (build 1.8.0_60-b27) 
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 

Linux version 2.6.32-504.el6.x86_64 

Но jhat может проанализировать его правильно.

+0

JHat может проанализировать его правильно, Eclipse MAT не может проанализировать его правильно. Может ли JMap также проанализировать его правильно? Кроме того, какая команда jhat вы используете? – entpnerd

+0

Дев Чжоу, по какой причине вы используете опцию '-F'? – entpnerd

+0

@ JonathanThoms, приложение не отвечает, поэтому я должен использовать '-F'. –

ответ

1

Похоже, что это известная проблема для Java 8. См. Bug 471757 и Bug 476262. У них нет исправлений. В качестве временного решения, я бы попробовал Yourkit. Это стоит денег, но в прошлом это работало хорошо, и, по крайней мере, вы можете получить бесплатный 2-недельный оценочный ключ, который должен быть достаточно длинным, чтобы решить вашу текущую проблему.

+0

Спасибо, я использовал Yourkit только сейчас. Но он выбрал исключение 'com.yourkit.util.i: com.yourkit.d.a6: C: \ Users \ user \ Desktop \ jmap \ heap.hprof недействительный снимок файл Техническая информация: файл моментальных снимков содержит неправильные записи и не может быть открыт. Возможно, он был создан Java 5 или старше. ' –

+0

Тот факт, что ни Mykit, ни MAT не могут его прочитать, заставляет меня предположить, что есть ошибка в файле дампа кучи. – entpnerd

+0

Dev Zhou, вы уверены, что команда 'jmap', которую вы используете, находится в том же каталоге JDK, что и команда' java', которая выполняет ваш процесс, соответствующий ''? Также, вопрос с дампом: вы уверены, что идентификатор процесса, который вы берете сваливание кучи, является правильным? Это должен быть процесс, соответствующий тому, который выполняется с помощью команды 'java'. И, наконец, мне никогда не приходилось использовать '-F', когда раньше брали кучи. Есть ли веские причины, по которым ваше приложение не ответит? Если это применимо, вы выбрали сервер вне ротации, чтобы он больше не принимал трафик? – entpnerd