OOM是Java 异常,java.lang.OutOfMemoryError
导致OOM的原因:
- 加载大图片导致内存溢出
- 大量的内存泄漏
解决方法:
- 使用更轻量的数据结构
- 避免在Android里面使用Enum
- 减少Bitmap对象的内存占用:缩放比例、解码格式
- 使用更小的图片
- 复用系统自带的资源
- ListView、GridView中对ConvertView的复用,ViewHolder内部类使用
- 避免onDraw方法中执行对象的创建
- 用StringBuilder进行拼接
- 注意Activity的泄漏:内部类引用导致Activity泄漏、Activity的Context被传递到其他实例中,可能导致自身被引用而发生泄漏。