Что представляют собой данные в dalvik-LinearAlloc, dalvik-aux-structure, dalvik-bitmap-1, dalvik-bitmap-2, dalvik-card-table, dalvik-mark-stack и dalvik-zygote?

Я использую команду showmap для PID, и я не могу понять эту часть в отчете:

 16384     3752      689        0     3132        0      620    4 /dev/ashmem/dalvik-LinearAlloc (deleted)
  2460     1748      934        0      828        0      920   18 /dev/ashmem/dalvik-aux-structure (deleted)
  8192      572      572        0        0        0      572    1 /dev/ashmem/dalvik-bitmap-1 (deleted)
  8192        0        0        0        0        0        0    1 /dev/ashmem/dalvik-bitmap-2 (deleted)
  4100      312      312        0        0        0      312    1 /dev/ashmem/dalvik-card-table (deleted)
502140    14860    14860        0        0        0    14860    3 /dev/ashmem/dalvik-heap (deleted)
  1500      280      280        0        0        0      280    1 /dev/ashmem/dalvik-jit-code-cache (deleted)
174764        0        0        0        0        0        0    1 /dev/ashmem/dalvik-mark-stack (deleted)
 22148    22148     2141        0    20452        0     1696    1 /dev/ashmem/dalvik-zygote (deleted)

Я хочу знать, какие данные находятся в dalvik-LinearAlloc, dalvik-aux-Structure, dalvik-bitmap-1, dalvik-bitmap-2, dalvik-card-table, dalvik-mark-stack и dalvik-zygote.

Этот ашмем стоит миллионы байт памяти, и я хочу найти способ уменьшить размер этого ашмема.

1 ответ

showmap сбрасывает данные Smap из одного процесса. Smap описывает детали области памяти процесса. В системе управления виртуальной памятью память может быть получена системным API, таким как mmap, brk. После получения адреса виртуальной памяти этими API, адрес и длина будут записаны в карте.

И давайте перечислим каждый раздел относительного использования памяти dalvik:

  • Раздел Кучи Dalvik (Управление кучей, GC)
    • dalvik-bitmap-1, dalvik-bitmap-2 - это структура данных управления кучей Dalvik. В Dalvik, GC отмечен как помехи, и 8- битная память будет помечена (используется или свободна) как один бит в битовой карте. Эти две битовые карты будут использоваться в качестве активной карты (используется для маркировки @ runtime), а другая будет использоваться в качестве маркированной карты (used @ GC time).
    • dalvik-mark-stack: для использования шага GC mark. Шаг пометки будет повторять растровое изображение, так что это поиск в ширину, для которого потребуется стек.
    • dalvik-card-table: используется для Dalvik Concurrent GC, на этапах растровой маркировки процесс будет выполнять другие задачи, которые приведут к использованию памяти. Эти карточные столы записывают грязную память после первого шага разметки. Вы можете увидеть детали путем поиска метки развертки GC.
    • dalvik-heap используется для использования памяти процесса
    • dalvik-zygote - это одна из частей кучи дырок, которая не будет использоваться @ GC. Все процессы будут делиться этими воспоминаниями, такими как ресурсы инфраструктуры.
  • dalvik-jit - это память Jit, используемая в Dalvik. JIT: как раз вовремя, который преобразует байт-код dex в машинный код, который может быть выполнен процессором.
  • dalvik-LinearAlloc: перманентная память dalvik, такая как: метод, данные определения класса, данные стека потока. Эта память может быть установлена READONLY после анализа определения класса.
  • dalvik-aux-structure: вспомогательные структуры данных, которые сжимают ссылку const метода / класса / строки. Эти ссылки будут использоваться в каждом файле dex, но сумма этой памяти будет стоить большой памяти. Таким образом, Dalvik создал память tmp, чтобы поделиться этими ссылками.

Если вы хотите проанализировать память вашей программы, я предлагаю вам использовать MAT в Eclipse. И использование собственной кучи, вы можете использовать mmap для управления.

Другие вопросы по тегам