2010-09-15 10 views
17

Ich bin neu auf dieser Android-Plattform. In einer Anwendung gibt es ein Speicherleck. Aber ich konnte nicht finden, in welcher Aktivität oder Klasse das Speicherleck passiert.So finden Sie Memory Leak Class/Aktivität in Android

Ich verwende MAT, um die Feststellung zu erhalten, dass das Speicherleck vorhanden ist oder nicht. Aber nicht in der Lage zu finden, welche Aktivität leckt.

Bitte sagen Sie mir, wie Sie herausfinden, welche Aktivität undicht ist.

Danke.

+0

möglich Duplikat: http://stackoverflow.com/questions/2851483/tracing-the-memory-window-leaks-in-android – Praveen

+0

Diese Artikel wird Ihnen zeigen, wie: http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html –

Antwort

2

Ich kann den vorherigen Beitrag nicht kommentieren, aber es ist wichtig zu erkennen, dass Sie sich absolut um die Speicherverwaltung sorgen sollten, insbesondere in der ressourcenbeschränkten Umgebung, die die mobile Android-Plattform darstellt. Für mehr auf, dass hier überprüfen:

http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

+0

Vermeidung kann Sie nur so weit bringen. Manchmal ist es eine Drittanbieter-Bibliothek, die Ihren Code stolpert. –

0

Sie es in der DDMS sehen können.

Wählen Sie einfach den Namen Ihres App-Pakets und klicken Sie auf update heap den obigen Knopf.

Jetzt gehen Heap Registerkarte klicken Ursache GC.

finden Sie die Auflistung der verwendeten Objekte.

5

Der beste Beitrag habe ich noch Speicherlecks auf Android-Plattformen auf Tracking gefunden ist:

http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

Der erste Teil, weil es jetzt ist integriert in Eclipse veraltet ist, aber von der Post die meisten ist großartig!

+0

Der Artikel, den Sie verlinkt haben, war der hilfreichste Artikel, den ich bei der Erkennung von Speicherverlusten in Android gefunden habe. Eine Million Kudos. –

33

Auch wenn diese Frage ruhig alt ist. Ich denke, ein kleines Tutorial mit Bildern könnte hilfreich sein. Also zuerst müssen Sie die MAT plugin installieren. Nach einem Neustart klicken Sie auf Dump HPROF Datei:

Device controls

Nach einiger Zeit (ca. 30 Sekunden) wird ein Dialog erhalten, wo Sie auf Fertig stellen klicken. Als Sie diese Ansicht erhalten:

Dump result

Es links Sie mit abgehenden Referenzen auf dem größten Teil und Filter klicken. Dann Sie diese Ansicht erhalten hier:

Hier können Sie sehen, dass ich verpasst Artikel in meinem Contentmanager zu löschen, in dem mehrere Elemente gespeichert wurden in meinem HashMap anhängig.

4

Verwenden Sie LeakCanary - eine Speicher-Lecksuche-Bibliothek für Android und Java. LeakCanary zeigt automatisch eine Benachrichtigung an, wenn in Ihrem Debug-Build ein Aktivitätsspeicherleck festgestellt wird. Die Installation dieser Bibliothek ist sehr einfach.

https://github.com/square/leakcanary

Meldung Beispiel:

enter image description here