首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dalvik-LinearAlloc,dalvik-aux-structure,dalvik-位图-1,dalvik-位图-2,dalvik卡表,dalvik标记堆栈和dalvik-合子中的数据是什么?

dalvik-LinearAlloc,dalvik-aux-structure,dalvik-位图-1,dalvik-位图-2,dalvik卡表,dalvik标记堆栈和dalvik-合子中的数据是什么?
EN

Stack Overflow用户
提问于 2014-03-10 11:55:45
回答 1查看 2.7K关注 0票数 6

我在PID上使用了showmap命令,我无法理解报告中的这个部分:

代码语言:javascript
复制
 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-结构,dalvik-位图-1,dalvik-位图-2,dalvik卡表,dalvik-标记堆栈和dalvik-合子中有什么数据。

这些ashmem花费了数百万字节的内存,我想找到一种缩小这些ashmem大小的方法。

EN

回答 1

Stack Overflow用户

发布于 2014-03-10 14:27:17

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

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

  • 达尔维克堆区(堆管理,GC)
    • Dalvik -位图-1,Dalvik-位图-2是Dalvik堆管理数据结构.在Dalvik中,GC是标记扫描,8字节内存将被标记(使用或释放)为位图中的一位。这两个位图将用作活动映射(用于标记@运行时),另一个将用作标记映射(使用@ GC时间)。
    • dalvik标记堆栈:用于GC标记步骤。标记步骤将迭代位图,因此这是一个宽度优先搜索,需要一个堆栈。
    • Dalvik卡表:用于Dalvik并发GC,在位图标记步骤中,该进程将执行其他将导致内存使用的任务.这些卡片表是记录内存脏后的第一步标记。您可以通过搜索标记扫描GC来查看细节。
    • dalvik-堆用于进程内存的使用。
    • dalvik-合子是孔堆的一部分,不会使用@ GC。所有进程都将共享这些记忆,如框架资源。

  • Dalvik是Dalvik中使用的jit内存。JIT:刚好及时,这将把dex字节码转换成可以由CPU执行的机器代码。
  • :是dalvik的perm内存,例如:方法、类定义数据、线程堆栈数据。这些内存可以在解析类定义后设置为READONLY。
  • 辅助数据结构,它将压缩方法/类/字符串引用。这些引用将被使用@每个dex文件,但是这些内存的和将花费一个大内存。因此Dalvik创建一个tmp内存来共享这些引用。

如果您想分析程序的内存,我建议您在eclipse中使用MAT。以及本机堆的使用,您可以使用mmap来管理。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22299403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档