# OOM


### OOM

#### 啥情况会出现

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

#### 咋办?

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


