美文网首页
android:largeHeap

android:largeHeap

作者: 黄海佳 | 来源:发表于2017-04-27 14:03 被阅读118次

最近看一个开源项目 发现它定义了android:largeHeap。之前没接触过,就做点笔记记录一下。

先看一下一些跟这篇文章相关的一些基础概念

手机内存、cup是固定的。随着市场的app数量的不断增加,我们要保证自己的app能稳定运行,我们需要格外注意app的性能。android会公平地为每一个app分配一个可用的内存,不管现在手机的空闲内存是否多,就算整个手机只有你一个app,也不会允许你肆意地把所有内存都占用掉。

这里面有几个关键名词

  • heapstartsize(堆分配的初始大小)
  • heapgrowthlimit(单个应用程序最大内存限制)
  • heapsize(单个java虚拟机最大的内存限制)

这些指标的大小跟机型有关系
例如我的红米4note的heapgrowthlimit是256M

如何查?(这里要注意的是shell 命令必须要加 “”)

查看单个应用程序最大内存限制: adb shell "getprop|grep heapgrowthlimit"

这些指标如何体现?

从上图可知:
app使用过程中需要给对象分配内存,则先会去看,现在是否有足够的内存,如果内存不够,先触发内存回收GC(Garbage Collection)操作,释放的无用的对象内存之后,如果内存还不够,系统才会给app增加内存分配,那么,增加多少内存,这个值要受到目标内存利用率的影响。

那么app的内存可以无限制增长吗?当然不可能。app的内存最大值,默认情况下,就是前面所说的单个应用程序最大内存限制(heapgrowthlimit),但是系统给了一定的扩展空间,开发者可以在manifest文件中增加 android:largeHeap="true" 这个语句,就可扩展这个最大值。如果app使用过程中占用的内存超过这个最大值,就会发生OOM,导致app闪退。

最后结论

通过清单文件中的 largeheap=true可以申请到更大的堆内存,但在一些严格限制的机型上,不一定有效。

相关文章

网友评论

      本文标题:android:largeHeap

      本文链接:https://www.haomeiwen.com/subject/qqngzttx.html