Android内存优化-2-OOM研究

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android内存优化-2-OOM研究相关的知识,希望对你有一定的参考价值。

为什么会有OOM

android系统app的每个进程或者说每个虚拟机(一个进程一个虚拟机)有最大内存限制(不同手机/版本限制不同), 如果应用申请的内存超过了限制, 系统就会抛出OOM异常. 这个整个设备的身影内存没关系. 较早的android系统一个虚拟机最多16M内存, 当一个app启动后, 如果虚拟机不停的申请内存资源来加载图片, 最终会OOM.
上面说的是虚拟机可以申请的最大内存, 对于heap堆的内存大小限制, 可以查看/system/build.prop文件.
为什么有限制? 1. 防止程序恶意使用过多内存, 2. 屏幕就那么大可现实的信息是有限的, 大部分的数据是出于准备显示状态, 无需分配内存.

简单防止OOM的作法

1. 不用的对象置为null
2. 不用的图片对象调用其 recycle() 方法.

怎样查看app内存分配情况
1. 通过DDMS中的Heap视图查看.











以上是关于Android内存优化-2-OOM研究的主要内容,如果未能解决你的问题,请参考以下文章

Effective Android:app优化 ------ 内存管理内存泄漏冷启动

Android内存优化五:Bitmap优化

Android内存优化三:内存泄漏检测与监控

Android性能优化(八)--Android图片内存优化

Android 性能优化之内存泄漏检测以及内存优化(下)

Android 性能优化之内存泄漏检测以及内存优化(下)