Otrzymuję następujący wyjątek podczas próby otwarcia pliku HPROF (utworzonego przez Debug.dumpHprofData
) za pomocą narzędzia Memory Analyzer:
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)
Jak mam to rozwiązać?
android
memory-leaks
dump
Asahi
źródło
źródło
Odpowiedzi:
hprof
Plik można uzyskać z Androidem ma android formatu konkretnego. Powinieneś przekonwertowaćhprof
plik pobrany z systemu operacyjnego Android do standardowegohprof
formatu. W tym celu możesz użyćhprof-conv
narzędzia znajdującego się pod adresemAndroidSDK/tools/hprof-conv
.Na przykład:
Następnie otwórz mat.hprof w narzędziu Memory Analyzer.
EDYCJA: hprof-conv może znajdować się
AndroidSDK/platform-tools/
w niektórych pakietach.źródło
Debug.dumpHprofData()
jest używana, konwersja powinna być wykonana ręcznie.Jeśli używasz Eclipse, po prostu zmień następujące:
źródło
hprof-conv
narzędzia, po prostu nic nie zrobiło. Więc wypróbowałeś swoją metodę i działa! Powinienem tylko zainstalować MAT do zaćmienia i teraz działa idealnie. dziękihprof-conv
zmieniła się lokalizacja narzędzia.Obecnie znajduje się pod adresem
AndroidSDK/platform-tools/hprof-conv
źródło