¿Cuál es el concepto detrás de "Lost RAM" que aparece en el meminfo de Dumpsys?

Como he mencionado en la pregunta, Lost RAM aparece en Dumpsys meminfo .

  1. ¿Cuál es el concepto detrás de "Lost RAM" que aparece en el meminfo de Dumpsys?
  2. ¿Cuál es su significado en Kitkat. ¿Cómo se puede recuperar y utilizar?

Muestra dumpsys mostrando "RAM perdida".

 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) 

En mi sistema, son causados ​​principalmente por ION (que reemplaza pmem). Si la depuración de iones está habilitada con su kernel, puede calcular su uso de ION con esta secuencia de comandos:

adb shell cat /d/ion/heaps/system|perl -ne 'chomp; if (m/pages in.*pool = (\d+) total/) {$x += $1;} if (m/^\s+total\s+(\d+)$/) {$y += $1} END {printf "use: %d kb, cache: %d kb; total: %d kb", $y/1024, $x/1024, ($x + $y)/1024}'

De hecho, cualquier asignación de página del núcleo realizada y controlada por los controladores no será rastreada por el kernel, contando así para el RAM perdido.

Después de detener el servidor del sistema, utilicé otro script .awk para calcular el RAM perdido (dumpsys meminfo requerirá el servicio meminfo y por lo tanto no funcionará más), y el RAM perdida está muy cerca de la siguiente salida de depuración de ION:

 #!/usr/bin/awk BEGIN { types["MemTotal"] = 1; types["Pss"] = 1; types["MemFree"] = 1; types["Cached"] = 1; types["Buffers"] = 1; types["Shmem"] = 1; types["Slab"] = 1; } ## start code-generator "^\\s *#" #echo # for x in Pss MemTotal MemFree Cached Buffers Shmem Slab; do # cat << EOF #/$x: / { # hash["$x"] += \$2; # next #} # #EOF # done ## end code-generator ## start generated code /Pss: / { hash["Pss"] += $2; next } /MemTotal: / { hash["MemTotal"] += $2; next } /MemFree: / { hash["MemFree"] += $2; next } /Cached: / { hash["Cached"] += $2; next } /Buffers: / { hash["Buffers"] += $2; next } /Shmem: / { hash["Shmem"] += $2; next } /Slab: / { hash["Slab"] += $2; next } ## end generated code END { lost = 0; for (type in types) { if (type == "MemTotal") { lost += hash[type]; } else { lost -= hash[type]; } } print "lost: " lost " kB\n"; } 

También he comprobado de nuevo después de que la fuerza de una memoria del núcleo de encogimiento con adb shell sh -c 'echo 3 > /proc/sys/vm/drop_caches' , los resultados siguen siendo muy cerca.

  • Lost appCache de Android 4.4 WebView
  • ¿Bloquear SMS entrantes en Android con Android 4.4 o superior?
  • IllegalArgumentException en grantUriPermission en el nivel 19 de API
  • Comprender la necesidad de las señales de Android VSYNC
  • Marcación de mensajes SMS como mensajes de lectura / no leídos o eliminación de mensajes que no funcionan en KitKat
  • Cajón de navegación debajo de la Barra de Acción
  • Android 4.4: ¿es válido el permiso WRITE_EXTERNAL_STORAGE en el almacenamiento externo primario / mnt / sdcard?
  • Uso del Kit Kat DatePicker en el dispositivo Lolipop
  • FitsSystemWindows y acolchado adicional en kitkat
  • ¿Cómo ignorar los cambios de configuración del tamaño de fuente para Cordova App cuando se ejecuta en Android 4.4 o superior?
  • Nexus 5 (Kitkat 4.4) no autorizará mi equipo con Windows 8
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.