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系统的物理内存消耗。
在创建Heap时,VM使用/dev/ashmem/作为句柄,调用mmap函数映射一块虚拟地址。需要注意的是,mmap使用MP_PRIVATE作为参数,实现copy-on-write的map。也就是说,在没有真正的写操作时,返回的虚拟地址指向一页清零的物理内存——当写操作发生时,新创建申请一页物理内存并且清零(用拷贝来清零),以后的页面都是这样按需分配。
按照上面的理解,增加dalvik.vm.heapsize并不会增加Android系统的物理内存消耗。
相关文章推荐
- Jmeter Debug - "Unrecognized VM option '+HeapDumpOnOutOfMemoryError"【转帖】
- Priority Queue(Heap)的实现及其应用
- MemoryHeapBase内存分配、Ashmem_create_Region mmap申请共享内存
- ant build Error occurred during initialization of VM Could not reserve enough space for object heap
- ant java vm heap的问题
- java vm heap的问题
- error occurred during initialization of vm incompatible initial and maximum heap sizes specified
- android 应用 heap size分配!!!
- STL heap简单应用
- Priority Queue(Heap)的实现及其应用
- Increase the android VM heap size.
- increase dalvik vm heapsize
- 利用AX产品与VMware虚拟化平台实现VM动态资源的按需分配和应用加速
- Increase the android VM heap size.
- MonoRail MVC应用(1)-VM/HTML页面
- C++中堆(优先队列)的应用:make_heap, pop_heap, push_heap, sort_heap, priority_queue
- MemoryHeapBase内存分配、Ashmem_create_Region mmap申请共享内存
- Aplix VM安装Java应用在main menu上不能显示自己的图标,而是显示一朵小花的解决方法
- 你不知道的Eclipse用法:使用Heap检测和分析Android应用内存
- VM 公司虚拟化产品的安装及简单应用