J'obtiens l'exception suivante en essayant d'ouvrir le fichier HPROF (créé par Debug.dumpHprofData
) avec 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)
Comment résoudre ça?
android
memory-leaks
dump
Asahi
la source
la source
Réponses:
Le
hprof
fichier que vous obtenez d'Android a un format spécifique à Android. Vous devez convertirhprof
la prise de fichier du système d'exploitation Android auhprof
format standard . Pour cela, vous pouvez utiliser l'hprof-conv
outil qui se trouve àAndroidSDK/tools/hprof-conv
.Par exemple:
Et puis ouvrez mat.hprof dans Memory Analyzer.
EDIT: hprof-conv peut être situé sous
AndroidSDK/platform-tools/
dans certains bundles.la source
Debug.dumpHprofData()
est utilisé, la conversion doit être effectuée manuellement.Si vous utilisez Eclipse, modifiez simplement ce qui suit:
la source
hprof-conv
outil, cela ne faisait rien. Alors essayé votre méthode et ça marche! Je devrais juste avoir à installer MAT pour éclipse et cela fonctionne maintenant parfaitement. mercihprof-conv
l'emplacement de l'outil a été modifié.Il est maintenant situé à
AndroidSDK/platform-tools/hprof-conv
la source