做项目时,从server端请求了3M左右的数据,然后进行json解析,数据存储。在中高端手机上面测试没有问题,后来使用一款三星手机,一直报OOM,导致crash。

每款手机都会给app分配固定的内存,供其是使用,

比如:

–G1: 16MB

– Nexus One: 32MB

如果超过这个限制,则会报OOM。

那怎么解决这个问题呢,最简单的方法是针对android3.0以上的系统,在application中加入权限android:largeHeap=true,这样系统会在app需要较大内存时,逐渐分配给app;

其实个人不倾向使用这种方法,还是应该从根本入手,从代码层面进行优化,同时也要对server端的数据进行优化,尽量不要一次性的处理超过1M的数据。

大家利用

<span style="font-size:18px;">int memClass = activityManager.getMemoryClass();</span>


得到自己手机的限制内存大小;