liujiakuoyx / leak_detector

flutter memory leak detector.
BSD 2-Clause "Simplified" License
133 stars 24 forks source link

请教一下如何看结果 #15

Closed davidCcD closed 10 months ago

davidCcD commented 1 year ago

谢谢大佬提供这个轮子,能运行监控到内存泄漏。但看不懂结果,哪个才是泄漏的地方,要看哪里呀?

liujiakuoyx commented 11 months ago

这个库我已经好久没维护了,当时没有更多的精力去设计对于泄漏结果的展示,确实存在问题,但我可以给你说几点我自己的经验,可以看下是否对您用帮助。

1、确定泄漏位置,首先从最上面的节点(引用链的末尾)观察是否是自己熟悉的Widget、State等对象,通过这些先确定泄漏的页面

image

2、分析引用链,找到自己熟悉的类名、属性名,如果能找到大概率问题出在这里,同时可以找到具体的类和属性所在的行号。然后根据自己代码逻辑进行排查分析。

image

当然这里最难的一点就是引用链中经常会掺杂一些第三方插件代码或者Flutter framework的对象,所以要有必要的时候可以将引用链中自己熟悉的节点筛选出来单独分析。

3、使用更完善的Flutter devtools,Flutter提供了web版的devtools,可以获取到更详细的内存快照信息,但是这个学习成本比较高,用起来比较复杂

ps:该泄漏检测只会展示出泄漏对象的其中一条引用链,所以有可能会误导,这里大家有兴趣可以优化一下。