垃圾回收 Gabbage Collection
1. 虚拟机内存分配
2. 垃圾对象
定义:不再被使用的对象
3. 垃圾识别算法
1) 引用计数法
漏洞: 无法识别出循环引用
角度:站在所有对象都有用的角度,找出来哪些对象是垃圾
2) ROOT搜索法
角度:站在所有对象都是垃圾的角度,找出来哪些对象有用
4. 垃圾清理算法
流程角度
1) 标记-->清除
2) 标记-->清除-->压缩
压缩:拷贝-->清除
3) 标记-->复制-->清除
从线程角度
1) 串行
2) 并行
3) 并发
垃圾对象的生命周期
短 中 长
一次性 若干次 永久
按代垃圾回收算法
三. 内存溢出OOM、泄漏问题的原因
1. 内存溢出
OutOfMemoryError
堆内存不够
StackOverflowError
栈内存不够
2. 内存泄露
定义:不是垃圾对象,但是没有被使用
问题:占用有效内存空间,中间过程是程序卡、顿, 严重最终会导致内存溢出
3. 解决OOM
场景:大量的图片在内存中
解决策略:
1) 内存中不要缓存过多的图片 UIL LRUCache
2) 借用外存 UIL
3) 大图要压缩
4) 根据控件选择合适大小的图片