微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – dalvik-LinearAlloc,dalvik-aux-structure,dalvik-bitmap-1,dalvik-bitmap-2,dalvik-card-table,dalvik-mark-stack和dalvik-zygote中的数据是什么?

我在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的大小.

解决方法

showmap正在从一个进程中转储smap数据. smap描述了进程的内存区域的细节.在虚拟内存管理系统中,内存可以通过系统API获得,如mmap,brk.通过这些API获取虚拟内存地址后,地址和长度将记录在smap中.

让我们列出dalvik相对内存使用情况的每个部分:

> Dalvik Heap部分(堆管理,GC)

> dalvik-bitmap-1,dalvik-bitmap-2是Dalvik Heap管理数据结构.在Dalvik中,GC是标记的,并且8位字节的内存将被标记(使用或空闲)作为位图中的一位.这两个位图将用作活动映射(用于标记@运行时),另一个将用作标记映射(使用@ GC时间).
> dalvik-mark-stack:用于GC标记步骤使用.标记步骤将迭代位图,因此这是一个需要堆栈的广度优先搜索.
> dalvik-card-table:用于Dalvik Concurrent GC,在位图标记步骤中,该过程将执行其他将导致使用内存的任务.这些卡表在第一个标记步骤后记录脏记忆.您可以通过搜索标记扫描GC来查看详细信息.
> dalvik-heap用于进程内存使用
> dalvik-zygote是孔堆的一部分,不会用于@ GC.所有进程都将共享这些内存,例如框架资源.

> dalvik-jit是Dalvik中使用的jit内存. JIT:及时,将dex字节码转换为可由cpu执行的机器码.
> dalvik-Linearalloc:是dalvik的perm内存,例如:Method,Class deFinition datas,thread stack datas.解析类定义后,可以READONLY设置这些内存.
> dalvik-aux-structure:辅助数据结构,它将压缩方法/类/字符串const引用.这些引用将用于每个dex文件,但这些内存的总和将花费大量内存.所以Dalvik创建了一个tmp内存来共享这些引用.

如果你想分析程序的内存,我建议你在eclipse中使用MAT.和本机堆使用情况一样,您可以使用mmap进行管理.

原文地址:https://www.jb51.cc/android/310310.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐