Speicher-Monitor in Android Studio berichtet von verschiedenen RAM-Nutzung als das Gerät

Bei der Untersuchung der RAM-Nutzung in einer App, an der ich arbeite, habe ich das Memory Monitor-Tool in Android Studio verwendet (kann in Android Studio aufgerufen werden, indem du auf Tools> Android> Memory Monitor gehst). Ich habe festgestellt, dass die RAM-Nutzung meiner App, die in Memory Monitor gemeldet wird, ist immer weit niedriger als bei der Anzeige der RAM-Nutzung aus dem Gerät (kann aufgerufen werden, indem Sie auf Einstellungen> Apps> Running). Wie Sie in den Screenshots unten sehen können, berichtet Memory Monitor über 18MB RAM-Nutzung (23MB, wenn Sie freien Speicherplatz einschließen), aber das Gerät berichtet 43MB.

Warum der Unterschied und ist auch ein genauer als der andere?

Speichermonitor

Gerät

  • Wie kann ich OutOfMemory ex vermeiden, während ich das Bild drehe?
  • Android - Grow Heap (Frag Case) - Byte Allokation .. Nicht Laden von Bitmaps
  • Volley - Download direkt in Datei (kein Speicher-Byte-Array)
  • Laden von Bildressourcen als RGB 565
  • Wie viel Speicher sollte eine typische Android-Anwendung verwenden?
  • Ermittlung des verfügbaren Speichers auf Android
  • Unterschied zwischen malloc und dlmalloc
  • Wie bekomme ich den aktuellen Speicherverbrauch in Android?
  • 2 Solutions collect form web for “Speicher-Monitor in Android Studio berichtet von verschiedenen RAM-Nutzung als das Gerät”

    Ich vermute, dass das Speicher-Monitor-Tool mit der dalvik virtuellen Maschine über Haufen-Zuweisungen von Java-Code, und der Geräte-Manager zeigt, was der gesamte Prozess ist für den Speicher verwendet zu sprechen. So enthält das erste nicht den Overhead oder den Speicher, der von der virtuellen Maschine selbst (oder seinem Text und Bibliotheken) verwendet wird, oder irgendwelche Off-Heap-Zuweisungen (manchmal native Code kann Speicher reservieren, der nicht direkt für die VM sichtbar ist).

    Weitere Informationen finden Sie unter https://developer.android.com/tools/debugging/debugging-memory.html#ViewingAllocations und versuchen Sie, den Befehl auszuführen:

     adb shell dumpsys meminfo <package_name> 

    Um einen genaueren Ausfall der Laufzeit-Speicher-Nutzung Ihrer Anwendung zu erhalten.

    Ich habe die Android-Studio's Memory Monitor's Allocated getestet können, bekommen diese Weise programmgesteuert:

    long allocatedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

    Aber das funktioniert nur, um Informationen über die aktuelle App zu erhalten.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.