Native Arbeitsspeichernutzung beheben

Address Sanitizer: HWASan/ASan

Android-Plattformentwickler verwenden HWAddressSanitizer (HWASan), um Speicherfehler in C/C++ zu finden.

Sie können vorkonfigurierte HWASan-Images von ci.android.com auf unterstützte Pixel-Geräte flashen (detaillierte Einrichtungsanleitung).

Seit Android 8.0 (Oreo) ist es auch möglich, ASan zum Debuggen von Apps auf nicht gerooteten Produktionsgeräten zu verwenden. Eine Anleitung dazu finden Sie auf der ASan-Wiki

Heapprofd

Android 10 unterstützt heapprofd, einen Heap-Profiler mit geringem Overhead. Mit heapprofd können Sie Aufrufstacks in Ihrem Programm die native Arbeitsspeichernutzung zuordnen. Weitere Informationen finden Sie unter . heapprofd – Android Heap Profiler auf der Dokumentationswebsite für Perfetto .

Malloc-Fehlerbehebung

Weitere Informationen: Malloc Debug und Nativ Arbeitsspeicher-Tracking mit libc-Callbacks für eine ausführliche Beschreibung der Debugging-Optionen für Probleme mit nativem Arbeitsspeicher zur Verfügung.

libmemunerreichbar

„libmemunreachable“ von Android ist ein nativer Speicherleck-Erkennung ohne Mehraufwand. Es verwendet einen ungenauen Mark-and-Sweep-Speicherbereiniger, der den gesamten nativen Arbeitsspeicher durchläuft und alle nicht erreichbaren Blöcke als Lecks meldet. Eine Anleitung zur Verwendung finden Sie in der libmemunreachable-Dokumentation.

Malloc-Hooks

Wenn Sie Ihre eigenen Tools erstellen möchten, unterstützt die libc von Android auch das Abfangen aller -zuweisungen/kostenlose Aufrufe, die während der Programmausführung erfolgen. Eine Anleitung zur Verwendung finden Sie in der malloc_hooks-Dokumentation.

Malloc-Statistik

Android unterstützt die Erweiterungen mallinfo(3) und malloc_info(3) von <malloc.h>. Die Funktion malloc_info ist ab Android 6.0 (Marshmallow) verfügbar und ist sein XML-Schema im <malloc.h>

Dalvik Debug Monitor Server

Sie können auch das Tool Dalvik Debug Server (DDMS) überwachen, um eine grafische Darstellung von Malloc Debug zu erhalten .

Aktivieren Sie zur Verwendung von DDMS zuerst die Benutzeroberfläche des nativen Arbeitsspeichers:

  1. ~/.android/ddms.cfg öffnen
  2. Fügen Sie folgende Zeile hinzu: native=true

Nachdem Sie DDMS neu gestartet und einen Prozess ausgewählt haben, können Sie zum neuen native Zuweisung und fügen Sie eine Liste von Zuweisungen ein. Das ist besonders nützlich, um Speicherlecks zu beheben.