Native Zuweisungen aufzeichnen

Wenn Sie nativen Code schreiben und Bedenken hinsichtlich der Speichernutzung haben, ist es hilfreich, die nativen Zuweisungen Ihrer App zu erfassen, um herauszufinden, ob es Optimierungsmöglichkeiten gibt.

Warum Sie den Arbeitsspeicher Ihrer App analysieren sollten

Android bietet eine verwaltete Arbeitsspeicherumgebung: Wenn Android feststellt, dass Ihre App einige Objekte nicht mehr verwendet, gibt der Garbage Collector den nicht verwendeten Arbeitsspeicher wieder an den Heap frei. Die Art und Weise, wie Android ungenutzten Arbeitsspeicher findet, wird ständig verbessert. Bei allen Android-Versionen muss der Code jedoch irgendwann kurz pausiert werden. In den meisten Fällen sind die Pausen nicht wahrnehmbar. Wenn Ihre App jedoch Arbeitsspeicher schneller zuweist, als das System ihn erfassen kann, kann es zu Verzögerungen bei der Ausführung Ihrer App kommen, während der Profiler genügend Arbeitsspeicher freigibt, um Ihre Zuweisungen zu erfüllen. Die Verzögerung kann dazu führen, dass Ihre App Frames überspringt und sichtbar langsamer wird.

Informationen zu Programmierpraktiken, mit denen Sie die Speichernutzung Ihrer App reduzieren können, finden Sie unter Verwaltung Ihres App-Speichers.

Native Zuweisungen – Übersicht

Wenn Sie die Aufgabe Speicherverbrauch erfassen (native Zuweisungen) ausführen, erfasst der Android Studio Profiler Zuweisungen und Deaktivierung von Objekten in nativem Code für den angegebenen Zeitraum und liefert die folgenden Informationen:

  • Zuweisungen: Die Anzahl der Objekte, die im ausgewählten Zeitraum mit malloc() oder dem Operator new zugewiesen wurden.
  • Deallocations: Die Anzahl der Objekte, die im ausgewählten Zeitraum mit free() oder dem Operator delete deaktiviert wurden.
  • Zuweisungsgröße: Die aggregierte Größe in Byte aller Zuweisungen im ausgewählten Zeitraum.
  • Deallocations-Größe: Die aggregierte Größe in Byte aller im ausgewählten Zeitraum freigegebenen Arbeitsspeicher.
  • Anzahl insgesamt: Der Wert in der Spalte Zuweisungen abzüglich des Werts in der Spalte Dealzuweisungen.
  • Verbleibende Größe: Der Wert in der Spalte Zuweisungsgröße abzüglich des Werts in der Spalte Dealzuweisungsgröße.

Auf dem Tab Visualisierung sehen Sie eine aggregierte Ansicht aller Objekte, die im ausgewählten Zeitraum mit nativem Code im Aufrufstapel zusammenhängen. Sie sehen hier, wie viel Arbeitsspeicher der Aufrufstapel mit den angezeigten Instanzen insgesamt belegt. Die erste Zeile enthält den Threadnamen. Standardmäßig werden die Objekte basierend auf der Größe der Zuweisung von links nach rechts gestapelt. Über das Drop-down-Menü können Sie die Reihenfolge ändern.

Standardmäßig verwendet der Profiler eine Stichprobengröße von 2.048 Byte: Jedes Mal, wenn 2.048 Byte Arbeitsspeicher zugewiesen werden, wird ein Arbeitsspeicher-Snapshot erstellt. Eine kleinere Stichprobe führt zu häufigeren Snapshots, was genauere Daten zur Speichernutzung ermöglicht. Eine größere Stichprobe führt zu weniger genauen Daten, verbraucht aber weniger Systemressourcen und verbessert die Leistung während der Aufzeichnung. Informationen zum Ändern der Samplegröße finden Sie unter Aufzeichnungskonfiguration bearbeiten.