我在PID上使用showmap命令,我无法理解报告中的这一部分:
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中的数据。
这些ashmem耗费了数百万字节的内存,我想找到一种缩小这些ashmem大小的措施。
答案 0 :(得分:9)
showmap
正在从一个进程中转储smap数据。 smap 描述了进程的内存区域的细节。在虚拟内存管理系统中,内存可以通过系统API获得,例如 mmap , brk 。在通过这些API获取虚拟内存地址后,地址和长度将记录在 smap 中。
让我们列出dalvik相对内存使用的每个部分:
如果你想分析程序的内存,我建议你在eclipse中使用MAT。和本机堆使用情况一样,您可以使用mmap进行管理。