在项目中将图片以base64格式上传,发现当上传的图片大于10张时,app直接崩溃了,出错log如下:
这里写图片描述
定位到出错代码发现是封装的网络底层出现了问题,代码如下:
这里写图片描述
出错log显示340行有问题,我看了半天也没发现有什么问题,最后在https://stackoverflow.com/questions/32919833/jsonobject-tostring-returns-outofmemoryerror找到了答案,原来是因为json数据太大了,超出了系统分配给应用的内存,从而导致了oom,解决方案也很简单,在manifest.xml中添加一个属性:
android:largeHeap="true"
添加这个属性之后,经测试没问题了.
android:largeHeapde的作用:
为了让应用能申请使用更多的内存,我们知道安卓系统对于每个应用都有内存使用的限制,机器的内存限制,
dalvik.vm.heapsize=128m
dalvik.vm.heapgrowthlimit=64m
这里heapgrowthlimit就是一个普通应用的内存限制,用ActivityManager.getLargeMemoryClass()获得的值就是这个。而heapsize是在manifest中设置了largeHeap=true之后,可以使用最大内存值。设置largeHeap的确可以增加内存的申请量。但不是系统有多少内存就可以申请多少,而是由dalvik.vm.heapsize限制。
---------------------
作者:ivluowei
来源:CSDN
原文:https://blog.csdn.net/qq15357971925/article/details/78040152
版权声明:本文为博主原创文章,转载请附上博文链接!