性能优化之内存泄漏检测

1.启动应用

1.png

2.查看堆信息

2.png

3.分析

3.png
4.png

4.查看分析结果

5.png
6.png

5.总结

内存泄漏:在Java中有些对象的生命周期是有限的,当它们完成了特定的逻辑后将会被垃圾回收;但是,如果在对象的生命周期本来该被垃圾回收时这个对象还被别的对象所持有引用,那就会导致内存泄漏。

  • context长期持有:当activity已经销毁,但是任然有其他对象持有其传递过去的context引用,导致GC无法回收(尽可能使用applicationContext对象可以在一定程度上避免这个问题)
  • static修饰成员变量:static修饰的成员属于类,而不是对象,所以该成员的引用的生命周期会较长,可能会导致内存泄漏(尽量避免static修饰的成员引用资源耗费过多的实例,如Context;在Activity生命周期结束时手动置空该引用,从而使得GC可以回收)
简言之:不要把activity轻易的交给其他“人”,如果非要这么做,记得在自己销毁时,收回(置空)自己的引用。

6.性能优化工具

leakcanary
360fireline

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容