内存泄漏学习碎片

内存泄漏:该回收的无法回收
内存抖动:频繁的执行GC。

CMS垃圾收集器
GC->垃圾收集器(GC具体的实现就是垃圾收集器)
STW stop the word:当GC垃圾回收的时候,所有的工作线程挂起。

带来的问题:
1、会造成页面的卡顿。为什么会卡顿,说到底还是因为GC带来的卡顿。
2、OOM 内存泄漏是内存使用量一直增加,内存抖动是增加降低。
为什么内存抖动造成OOM?
垃圾回收算法:三种。三种算法当中主要是标记清除算法。如果GC采用标记清除算法会长生OOM。(内存碎片)
CMS就是采用标记清除算法。

内存泄漏: Leakcanary 快手 KOOM 微信Matrix
内存抖动:抖音Kenzo(并没有开源),通过AS中的profile也可以测试
案例一、
onMesuger 方法一次
onDraw多次,所以该方法里面不要创建对象,要减少对象的创建。
8.0之后垃圾回收器好很多,原因8.0后是CC垃圾收集器

案例二、
当循环大量创建对象的时候,可以考虑对象池的使用。
借鉴:
Handler 对象池:Message 单链表,不需要筛选,handler.obtainMessage()
Glide对象池:map,需要筛选,对象有差异
key:长度,为什么长度作为key,方便筛选
value:byte[]

案例三、
Gson 与对象池结合使用,给Gson设置Adapter,javaBean然后就可以在Adapter中自己创建,结合对象池防止不断重复创建对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容