android内存管理小结

  • dalvik.vm.heapsize=16m

          这个参数是指分配给一个虚拟机的最大堆内存。如系统每打开一个应用程序,就要为其分配一个虚拟机。可以通过getprop | grep dalvik.vm.heapsize查看此值。

 

栈(stack)与堆(heap),堆(HEAP)是VM中占用内存最多的部分,通常是动态分配的,存取速度比较慢。

两个options为java应用程序分配内存(jvm中进行的操作):

Xms - sets initial java heap size
Xmx - sets maximum java heap size

在/dalvik/vm/init.c下:

gDvm.heapSizeStart----内存堆初始申请大小

gDvm.heapSizeMax------dalvik内存堆申请最大不能超过,超过便导致OOM了。

堆的大小有一个分配机制来控制比如初始的HEAP是4M大,当4M的空间被占用超过75%的时候,重新分配堆为8M大;当8M被占用超过75%,分配堆为16M大。倒过来,当16M的堆利用不足30%的时候,缩减它的大小为8M大。

heap空间完全由程序员控制,我们使用的malloc、C++ new和java new所申请的空间都是heap空间, C/C++申请的内存空间在native heap中,而java申请的内存空间则在dalvik heap中。所以dalvik.vm.heapsize不包括JNI申请的内存!也可以通过多开进程来增加程序可获得的RAM!

使用dumpsys meminfo + packagename/pid:可以看到程序占用的heap sizes。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值