Я получаю следующее исключение при попытке открыть файл HPROF (созданный Debug.dumpHprofData
) с помощью анализатора памяти:
java.io.IOException: Unknown HPROF Version (JAVA PROFILE 1.0.3)
at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:124)
at org.eclipse.mat.hprof.Pass1Parser.read(Pass1Parser.java:69)
at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:65)
at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:123)
at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:56)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Как мне решить эту проблему?
android
memory-leaks
dump
Asahi
источник
источник
Ответы:
hprof
Файл , который вы получаете от Android имеет андроид формат , специфичный. Вам необходимо преобразоватьhprof
файл, взятый из ОС Android, в стандартныйhprof
формат. Для этого вы можете использоватьhprof-conv
инструмент, расположенный по адресуAndroidSDK/tools/hprof-conv
.Например:
Затем откройте файл mat.hprof в Анализаторе памяти.
РЕДАКТИРОВАТЬ: hprof-conv может находиться
AndroidSDK/platform-tools/
в некоторых пакетах.источник
Debug.dumpHprofData()
он используется, преобразование должно выполняться вручную.Если вы используете Eclipse, просто измените следующее:
источник
hprof-conv
инструмента, он просто ничего не делал. Итак, попробовал свой метод, и он работает! Мне просто нужно было установить MAT для eclipse, и теперь он отлично работает. спасибоhprof-conv
изменено расположение инструмента.Сейчас он находится по адресу
AndroidSDK/platform-tools/hprof-conv
источник