J'obtiens l'exception suivante lorsque j'essaie 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?
Le fichier hprof
que vous obtenez à partir de Android a Android format spécifique. Vous devez convertir le fichier hprof
à partir de Android OS au format standard hprof
. Pour cela, vous pouvez utiliser hprof-conv
outil situé à AndroidSDK/tools/hprof-conv
.
Par exemple:
hprof-conv Android.hprof mat.hprof
Et puis ouvrez mat.hprof dans Memory Analyzer.
EDIT: hprof-conv peut être situé sous AndroidSDK/platform-tools/
dans certains bundles.
Si vous utilisez Eclipse, modifiez simplement les éléments suivants:
hprof-conv
l'emplacement de l'outil a été modifié.
Il est maintenant situé au AndroidSDK/platform-tools/hprof-conv