Qu'est-ce que la «RAM perdue» dans dumpsys meminfo?

8

Vous trouverez ci-dessous un exemple dumpsysavec Lost RAM. Quelle est sa signification dans KitKat? Comment peut-il être récupéré et utilisé?

Total PSS by OOM adjustment:
    31841 kB: Native
               13173 kB: zygote (pid 23001)
                4372 kB: surfaceflinger (pid 23000)
                3721 kB: mediaserver (pid 126)
                3317 kB: glgps (pid 22993)
                1656 kB: drmserver (pid 125)
                 995 kB: wpa_supplicant (pid 23148)
                 786 kB: netd (pid 121)
                 518 kB: sdcard (pid 132)
                 475 kB: vold (pid 119)
                 458 kB: keystore (pid 128)
                 448 kB: /init (pid 1)
                 412 kB: adbd (pid 134)
                 254 kB: ueventd (pid 108)
                 238 kB: dhcpcd (pid 10617)
                 229 kB: tf_daemon (pid 130)
                 200 kB: installd (pid 127)
                 185 kB: dumpsys (pid 14207)
                 144 kB: healthd (pid 117)
                 139 kB: debuggerd (pid 122)
                 121 kB: servicemanager (pid 118)
    48217 kB: System
               48217 kB: system (pid 23064)
    49095 kB: Persistent
               34012 kB: com.android.systemui (pid 23163 / activities)
                7719 kB: com.android.phone (pid 23357)
                4676 kB: com.android.nfc (pid 23371)
                2688 kB: com.nuance.xt9.input (pid 23344)
    24945 kB: Foreground
               24945 kB: com.android.settings (pid 24811 / activities)
    17136 kB: Visible
               14026 kB: com.google.process.location (pid 23472)
                3110 kB: com.android.defcontainer (pid 13976)
     6911 kB: Perceptible
                6911 kB: com.google.android.inputmethod.latin (pid 23298)
    14277 kB: A Services
               14277 kB: com.google.process.gapps (pid 23513)
    26422 kB: Home
               26422 kB: com.android.launcher (pid 23395 / activities)
    21798 kB: B Services
               16242 kB: com.google.android.apps.currents (pid 23767)
                5556 kB: android.process.media (pid 7738)
   145869 kB: Cached
               41588 kB: com.google.android.apps.plus (pid 24689)
               21417 kB: com.google.android.deskclock (pid 23966 / activities)
               14463 kB: com.google.android.apps.docs (pid 8644)
               14303 kB: com.google.android.gm (pid 9115)
               11014 kB: com.google.android.music:main (pid 7716)
               10688 kB: com.google.android.apps.magazines (pid 13892)
               10240 kB: com.google.android.gms (pid 23338)
                9882 kB: com.google.android.youtube (pid 5131)
                8807 kB: com.google.android.apps.walletnfcrel (pid 8937)
                3467 kB: com.google.android.setupwizard (pid 8922)

Total RAM: 998096 kB
 Free RAM: 574945 kB (145869 cached pss + 393200 cached + 35876 free)
 Used RAM: 392334 kB (240642 used pss + 107196 buffers + 3856 shmem + 40640 slab)
 Lost RAM: 30817 kB
   Tuning: 64 (large 384), oom 122880 kB, restore limit 40960 kB (high-end-gfx)
stat
la source
Bref calcul (répondant au titre de votre question): "Lost RAM" = total - used - free. Hm, des fuites de mémoire? Récupérer par redémarrage? 30 Mo, ce n'est peut-être pas beaucoup (par rapport au total de 1 Go), mais c'est 3% et pas amusant ...
Izzy
J'ai à tout moment une mémoire perdue de 300 Mo + sur mon appareil. J'aimerais aussi savoir pourquoi il est perdu et existe-t-il un moyen de le récupérer.
Wang Dingwei
stackoverflow.com/questions/21881122/… peut-être que cela peut aider
samnaction

Réponses:

7

La RAM perdue est TotalRAM - FreeRAM - UsedRAM. Cela signifie que c'est la différence entre l'utilisation de la RAM qu'Android est capable de calculer et la RAM disponible réelle.

Parfois, il peut même être négatif, en raison de problèmes où la RAM partagée entre les processus est comptée plus d'une fois. Les conducteurs sont généralement blâmés pour cela. Il existe un memtrackHAL pour signaler leur comptabilité de mémoire à Android, mais certains pilotes ne le font pas correctement.

Si vous voyez une grande valeur de "RAM perdue" (ce qui n'est pas le cas dans la question d'origine, mais c'est ce dont parle Wang), cela est probablement dû à un bug, il ne peut malheureusement pas être récupéré. Vous pouvez examiner /d/ionle répertoire virtuel de votre appareil (probablement un appareil enraciné est nécessaire) et examiner les rapports qu'il contient, à la recherche d'allocations "orphelines".

Mikhail Naganov
la source