Что представляют собой данные в 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 для управления.