1,如何发现内存泄露
内存泄露本质是长生命周期的对象引用了短生命周期对象,导致短生命周期对象内存空间不能及时回收。
LeakCanary在 Activity里销毁的时候,将activity实例放入弱引用中,再将弱引用放入引用队列中,然后执行gc,最后检测引用队列中是否有activity实例,如果有说明发生了内存泄露。
弱引用,就是gc后就回收。软引用是内存不足才回收。强引用是不回收。既然gc之后,弱引用里面的activity实例没有被销毁,说明还有对象引用activity实例。也就是内存泄露了。
2,如何找出哪里泄露了?
到底是哪里发生了内存泄露?也就是到底谁引用了activity实际,去分析hprof文件就可以了。LeakCanary内存开启IntentService去这件事,找到以后就弹出泄露界面。
本文探讨了如何利用LeakCanary工具在Android应用中检测内存泄露,通过理解其工作原理,重点讲述了如何分析HProf文件追踪泄漏源头,并介绍了如何开启IntentService进行内存监控。最终目标是帮助开发者定位和修复内存泄漏问题。
1万+

被折叠的 条评论
为什么被折叠?



