Ich muss meine Anwendung auf Speicherverluste überprüfen, ich muss auch die Speicherbelegung meiner Anwendung sehen. Ich habe Eclipse Memory Analyzer heruntergeladen und installiert, und es sieht so aus, als ob der erste Schritt darin besteht, einen Heap-Dump zu öffnen. Aber was ist ein Heap-Dump, wie kann ich einen Heap-Dump erstellen. Und wie genau soll ich diese Software benutzen, habe ich einige googeln, aber ich konnte keine nützlichen Informationen dankAndroid ==> Speicheranalyse ==> Eclipse-Speicheranalysator?
Antwort
finden, wenn Sie Ihre Anwendung debuggen, öffnen DDMS in Eclipse. Auf der Symbolleiste befindet sich eine Heap-Dump-Schaltfläche, mit der Sie einen Heap-Dump erstellen können, der im Eclipse-Speicheranalysator angezeigt wird. Dies wird nur unterstützt mit dem 1.6+ oder 2.0+ SDK.
Ok, so klickte ich dump, und es wurde ein neues Fenster namens android123123123 mit vielen seltsamen Zeichen drin. Was mache ich mit dieser Seite? Wo ist die Datei? Danke nochmal – aryaxt
Ich habe es selbst herausgefunden. Datei ==> Speichern unter, öffnete dann die Datei im Speicher Analysator – aryaxt
Sie einen wichtigen Schritt in Mathias Antwort erwähnt weggelassen: „Die Heapdump der Dalvik VM muss regelmäßig Hprof-Format konvertiert werden, um die Hprof-conv.exe Konverter Werkzeug im Tools-Verzeichnis des Android SDK. " –
Der Heap-Dump der dalvik VM muss mit dem Konvertierungswerkzeug hprof-conv.exe im Tools-Verzeichnis des Android SDK in das normale hprof-Format konvertiert werden. Sie können diese Hprof mit Eclipse MAT oder anderen Werkzeugen öffnen sind: YourKit http://www.yourkit.com/ und JProbe http://www.quest.com/jprobe/
Neben DDMS Sie auch die Hprof von Ihnen app/Code erstellen können (nur neuere SDKs) über Debug.dumpHprofData(...)
Hinweis In DDMS können Sie den Heap sehen, den Ihre App verwendet. Der native Heap, den externe Ressourcen wie Bitmaps zuweisen, wird nicht angezeigt. Diese Ressourcen müssen jedoch auch bei der Überprüfung auf Speicherlecks berücksichtigt werden. Wenn sowohl der native als auch der app-Heap bis zu 16MB/resp. 24MB erhalten Sie einen OOM-Fehler.
Sie können den nativen Heap, der (z. B. per Bitmaps in Ihrer App) verwendet wurde, über Debug.getNativHeapAllocatedSize()
sehen.
ich auf dem Mac bin es keine solche thning als exe ist, und ich muss nicht mit der Datei nichts tun, ich sparte es einfach, wie es von Eklipse war, und ich öffnete sie mit Memory-Analyzer, ohne Problem – aryaxt
@MathiasLin, gibt es eine Möglichkeit, Objekte im nativen Heap zu analysieren/anzuzeigen? – snapfractalpop
@snapfractalpop Entschuldigung, ich weiß nicht, habe ich noch nicht selbst gesucht. –
Auch http://developer.android.com/guide/developing/debugging/ddms.html#profiling
sehen, ob es hilft, können Sie Profilierung über lokale Bereiche des Codes ermöglichen durch die Debug-API. Auf diese Weise haben Sie weniger Ausführlichkeit bei der Analyse der Spuren in zum Beispiel TraceView. Beispiele finden Sie in http://macgyverdev.blogspot.com/2011/07/profiling-android-application-tutorial.html.
Und einige detailliertere Informationen darüber, wie Heap konvertieren DDMS Dumps, damit Sie sie in Eclipse Memory Analyzer sehen können und Ihre undichten Objekte über den Beherrscher Baum Werkzeuge finden: http://macgyverdev.blogspot.com/2011/11/android-track-down-memory-leaks.html
Gerade FYI, da es um das Thema bezieht sich - es gibt einen neuen Blog-Post auf dem android-Blog auf mem Analyse: http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html –