Android内存泄露容易导致内存溢出,又称为OOM。
内存泄漏怎么产生的
- 资源对象没关闭造成的内存泄漏
- 构造Adapter时,没有使用缓存的convertView
- Bitmap对象不在使用时调用recycle()释放内存
- 试着使用关于application的context来替代和activity相关的context
- 注册没取消造成的内存泄漏
- 集合中对象没清理造成的内存泄漏
怎么查找内存泄漏
- 使用Android Studio 自带的Android Profiler工具
- 使用Square产品的LeadCanary.
Android内存优化策略
- 在循环内尽量不要使用局部变量
- 不用的对象即时释放,即指向NULL
- 数据库的cursor即时关闭。
- 构造adapter时使用缓存convertView
- 调用registerReceiver()后在对应的生命周期方法中调用unregisterReceiver()
- 即时关闭InputStream/OutputStream。
- android系统给图片分配的内存只有8M, 图片尽量使用软引用, 较大图片可通过BitmapFactory缩放后再使用,并及时recycle
- 尽量避免static成员变量引用资源耗费过多的实例。
网友评论