【转】 关于Android堆内存的设置
16lz
2022-04-17
转自 http://www.cnblogs.com/jacktu/archive/2010/12/30/1921475.html
VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);
VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);
以上两种方法,对内存溢出问题并没有实质帮助。 堆(HEAP)是VM中占用内存最多的部分,通常是动态分配的。堆的大小不是一成不变的,通常有一个分配机制来控制它的大小。比如【下列都是假设数据】初始的HEAP是4M大,当4M的空间被占用超过75%的时候,重新分配堆为8M大;当8M被占用超过75%,分配堆为16M大。倒过来,当16M的堆利用不足30%的时候,缩减它的大小为8M大。重新设置堆的大小,尤其是压缩,一般会涉及到内存的拷贝,所以变更堆的大小对效率有不良影响。
Max Heap Size,是堆内存的上限值,Android的缺省值是16M(某些机型是24M),对于普通应用这是不能改的。函数setMinimumHeapSize其实只是改变了堆的下限值,它可以防止过于频繁的堆内存分配,当设置最小堆内存大小超过上限值时仍然采用堆的上限值,对于内存不足没什么作用。
更多相关文章
- Android(安卓)handler的Context内存泄露
- Android中的获取内存信息的相关命令
- Android(安卓)常用的SDCARD和内存操作
- 技术|Android安装包优化
- Android(安卓)一行代码全局应用内屏蔽系统设置字体和显示大小
- Android中屏幕密度和图片大小的关系分析
- Android根据文件路径加载指定文件
- android设置Spinner字体颜色,格式,大小
- android 内存使用