OOM是什么?什么情况导致OOM?有什么解决方法可以避免OOM?

  • OOM是Java 异常,java.lang.OutOfMemoryError

  • 导致OOM的原因:

    • 加载大图片导致内存溢出
    • 大量的内存泄漏
  • 解决方法:

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