Wie man Speicher mit Android Studio analysiert

74

Wechseln Sie kürzlich von Eclipse zu Android Studio. Wie überprüfe ich App-Heap und Speicherzuordnung in Android Studio? In Eclipse haben wir MAT. Gibt es irgendetwas im Studio, um Heap Dump, Hprof-Datei zu überprüfen?

Prachi
quelle

Antworten:

120

Ich werde es auf einfache Weise mit Schritten erklären:

  1. Zuerst müssen Sie MAT installieren ( herunterladen ) oder verwenden:

    Braufass Speicheranalysator installieren

  2. Öffnen Sie in Android Studio Android Device Monitor oder DDMS.

  3. Wählen Sie Ihren Prozess "com.example.etc .."

  4. Klicken Sie über der Prozessliste auf Heap aktualisieren.

  5. Wählen Sie im rechten Bereich die Registerkarte Heap.

  6. Klicken Sie in Ursache GC.

  7. Klicken Sie über der Prozessliste auf HPROF-Datei sichern.

  8. Wenn wir die Datei HPROF heruntergeladen haben, müssen wir das Terminal öffnen und diesen Befehl ausführen, um die Datei zum Öffnen mit MAT zu generieren.

  9. Öffnen Sie das Terminal und führen Sie diesen Befehl aus

./hprof-conv path / file.hprof exitPath / heap-convert.hprof

Der Befehl "hprof-conv" befindet sich im Ordner platform-tools des sdk.

  1. Und ready und MAT können die konvertierte Datei (heap-convert.hprof) öffnen und öffnen.
Joselufo
quelle
neugierig, was passieren soll, wenn der hprof abgeladen wird; Nach dem Klicken auf diese Option scheint nichts zu passieren. Wann sollte es einen Hinweis darauf geben, dass der Speicherauszug abgeschlossen ist, und wo wird die Ausgabe abgelegt? Vielen Dank.
wkhatch
1
@wkhatch, es kann eine Weile dauern, bis der Dialog angezeigt wird. Sie sollten ein Fenster sehen, in dem Sie nach dem Speicherort gefragt werden. Falls es jemand anderem hilft, habe ich nicht bemerkt, dass der MAT-Download-Link ein eigenständiger Download ist (open mat.app). Ich dachte, es wäre nur ein Link zum Eclipse-Plugin.
Loeschg
Danke @loeschg. Ich habe es bei einem anderen Versuch zum Laufen gebracht. Aus irgendeinem Grund legte es nur die ersten Male auf, als ich es versuchte.
Woche
14
In neueren Android Studio- Versionen (1.2.x) kann ein Heap-Dump schnell generiert werden über: Registerkarte "Android" (6)> Unterregisterkarte "Speicher"> Symbol "Java-Heap sichern": Hiermit wird eine .hprof-Datei erstellt und heruntergeladen in einen Ordner mit dem Namen Captures in Ihrem Projektverzeichnis. Von dort aus würden die Schritte 9 bis 10 der Beschreibung von @ TeRRo den Auftrag abschließen.
d4vidi
@undo danke für das Update!. Fühlen Sie sich frei, die Antwort zu bearbeiten, wenn Sie können, wenn nicht, werde ich bald aktualisieren.
Joselufo
40

Es gibt eine andere Möglichkeit, Zuordnungen anzuzeigen:

Starten und Beenden der Zuordnungsverfolgung

Siehe das Ergebnis

cVoronin
quelle
13
Die Schaltfläche wurde jetzt in die Registerkarte "Speicher" verschoben.
PiTheNumber
13

Android Monitor -> Monitore (neben logcat) -> Speicher -> Java-Heap sichern

Geben Sie hier die Bildbeschreibung ein

Jay
quelle
Ich glaube, diese Antwort ist veraltet - Es gibt keinen Monitor neben Log Cat, soweit ich jetzt sehen kann
Chris Nevill
3

Ich stimme der obigen Antwort mit Ausnahme der folgenden Schritte zu

  1. Klicken Sie über der Prozessliste auf Heap aktualisieren.

  2. Wählen Sie im rechten Bereich die Registerkarte Heap.

  3. Klicken Sie in Ursache GC.

Sie sind nicht erforderlich. Wählen Sie einfach Ihre App / Ihren Prozess in DDMS aus und klicken Sie, um die HPROF-Profiloption zu sichern. Befolgen Sie danach die Schritte genau wie oben.

Akshay
quelle
3

Man kann auch Folgendes tun, um mehr Optionen zu erhalten:

  1. Gehen Sie zu Extras
  2. Dann zu Android
  3. Endlich zum Android Device Monitor
Arade
quelle
3
  1. Installieren Sie zuerst MAT . Um es in Android Studio zu verwenden, müssen Sie sich Stand-alone Eclipse RCP Applicationsfür die Installation entscheiden, die als unabhängiges Tool verwendet werden kann

  2. Führen Sie in Android Studio Ihre Anwendung aus

  3. Wählen Sie im unteren Bereich aus 6:Androidund dann ausMemory Monitor

  4. Klicken Dump Java Heap

  5. Wechseln Sie zur Registerkarte "Aufnahmen" (im linken Bereich). Sie finden die .hprofDatei im Heap SnapshotOrdner

  6. Um die .hprofDatei in MAT zu öffnen , müssen Sie das Format konvertieren: Klicken Sie mit der linken Maustaste auf die .hprofDatei und wählen SieExport to standard .hprof

  7. Öffnen Sie MAT und öffnen Sie die .hprofDatei, in die Sie das Format konvertiert haben

Eisiger Tsai
quelle
2

Beachten Sie, dass im neuesten Android Studio (1.3+) die Heap-Erfassung (Android hprof) auf die Unterregisterkarte Memory Monitor unter der Registerkarte Android verschoben wurde (wie das erste Bild in der Antwort von cVoronin).

Wenn die Aufnahme abgeschlossen ist, wird sie automatisch im Verzeichnis "Captures" unter Ihrem Projekt gespeichert (Sie können die Datei nachträglich umbenennen, wenn Sie dies wünschen). Die hprof-Datei wird automatisch im neuen hprof-Viewer ab Version 1.3 geöffnet.

Natürlich haben Sie immer die Möglichkeit, es in das Standard-hprof-Format zu konvertieren und in MAT anzuzeigen. Klicken Sie einfach mit der rechten Maustaste auf die Datei im Captures-Browser (unter dem Projektbrowser) und wählen Sie dort Konvertieren. Und wie üblich würden Sie unterwegs einige zusätzliche Android-spezifische Informationen verlieren, wenn Sie den neuen Viewer nicht verwenden, da Standard-hprof diese nicht unterstützt.

Keine Ahnung
quelle
2

Ich habe von Eclipse zu Android Studio gewechselt, verwende aber weiterhin MAT in Eclipse mit dem DDMS-Plugin. Es ist so viel einfacher.

Christine
quelle
Seit ich dies gepostet habe, hat Android Studio seine Analysetools erheblich verbessert. Ich benutze jetzt AS für die Analyse.
Christine
1

Ich weiß, dass dies eine ziemlich alte Frage ist, aber Android Studio 3 hat jetzt einen eingebauten Profiler.

Siehe Dokumentation hier: Android Profiler in Android Studio 3.0

dankito
quelle
Kannst du mir sagen, wie man Android Studio 3 Analyzer verwendet?
Amir133
0

Sie können Android Profiler in neuen Android Studio verwenden.

Gv Ravi
quelle