系统相关
首页 > 系统相关> > LeakCanary监测内存泄漏的原理

LeakCanary监测内存泄漏的原理

作者:互联网

监测机制利用了Java的WeakReference和ReferenceQueue,通过将Activity包装到WeakReference中,被WeakReference包装过的Activity对象如果被回收,该WeakReference引用会被放到ReferenceQueue中,通过监测ReferenceQueue里面的内容就能检查到Activity是否能够被回收(在ReferenceQueue中说明可以被回收,不存在泄漏;否则,可能存在泄漏,LeakCanary是执行一遍GC,若还未在ReferenceQueue中,就会认定为泄漏)。

如果Activity被认定为泄露了,就抓取内存dump文件(Debug.dumpHprofData);之后通过HeapAnalyzerService.runAnalysis进行分析内存文件分析;接着通过HeapAnalyzer (checkForLeak—findLeakingReference---findLeakTrace)来进行内存泄漏分析。最后通过DisplayLeakService进行内存泄漏的展示。

 

详细参考学习https://www.jianshu.com/p/261e70f3083f

标签:泄漏,LeakCanary,内存,Activity,WeakReference,ReferenceQueue
来源: https://www.cnblogs.com/genggeng/p/10438896.html