您的位置:首页 > 移动开发 > Android开发

ashmem在VM Heap上的应用

2014-09-23 19:36 288 查看
Dalvik和ART的Heap都使用ashmem作为底层的内存分配器,这里的Heap指java heap。除了Heap本身,用于管理Heap的一些数据结构,比如cardtable,bitmap,markstack等也都使用ashmem作为底层的内存分配器。

在创建Heap时,VM使用/dev/ashmem/作为句柄,调用mmap函数映射一块虚拟地址。需要注意的是,mmap使用MP_PRIVATE作为参数,实现copy-on-write的map。也就是说,在没有真正的写操作时,返回的虚拟地址指向一页清零的物理内存——当写操作发生时,新创建申请一页物理内存并且清零(用拷贝来清零),以后的页面都是这样按需分配。

按照上面的理解,增加dalvik.vm.heapsize并不会增加Android系统的物理内存消耗。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息