目录

OOM

OOM

啥情况会出现

  1. 图片视频等大量消耗内存的场景
  2. onDraw() 里创建了大量对象
  3. 内存泄漏导致占用内存大, 空闲内存不足导致 OOM (LeakCanary)
  4. 布局层级太深

咋办?

  1. 使用尽可能少的图片, 不用的图片及时回收或放入 LRU
  2. 使用对象池复用一些对象
  3. 避免在 onDraw() 中创建对象
  4. 谨慎使用 static 对象 ()
  5. 数据库 cursor 不用时, 及时关闭
  6. 在一些情况下可以考虑更轻量的 SparseArray, ArrayMap 用来替代 HashMap
  7. 使用 ConstraintLayout 替代多层嵌套的布局