这两天lz
用Xcode
自带的leak
工具对项目跑了一遍,发现了一个三方用的UIWebview
的内存泄漏问题(其实就是简单的初始化),于是我自己写了个demo
,对于UIWebview
,WKWebview
,循环引用分别都跑了一遍,以下是测试结果:
- UIWebview
首先用leak
查看结果如下:
在用Allocations
查看,在每次进入TestviewController
的时候,在网页加载完全的时候Mark Generation
一下,就有了上面的小🚩子,可以看到当前内存占用情况,打了4
个标记,结果如下:
屏幕快照 2019-04-02 下午2.22.50.png133.86 MiB
134.36 MiB
140.06 MiB
150.02 MiB
在Xcode
中结果如下:
可以看到峰值达到了266.4
MB
-
WKWebview
首先用leak
查看结果如下:
屏幕快照 2019-04-02 下午2.25.43.png
在用Allocations
查看,步骤跟UIWebview
一样,结果如下:
屏幕快照 2019-04-02 下午2.26.06.png108.48 MiB
108.61 MiB
108.62 MiB
108.61 MiB
在Xcode
中结果如下:
可以看到峰值只有147.9
MB
-
循环引用
首先用leak
查看结果如下: 屏幕快照 2019-04-02 下午2.32.10.png
在用Allocations
查看,结果如下:
屏幕快照 2019-04-02 下午2.30.38.png9.92 MiB
9.96 MiB
9.97 MiB
9.98 MiB
在Xcode
中结果如下:
可以看到内存增长的很缓慢
结论:
1.UIWebview
,WKWebview
,循环引用都有内存泄漏问题,都可以用leak
检测到
-
WKWebview
相对于UIWebview
内存变化更稳定,而且内存开销相对小很多
ps:MLeaksFinder
是 WeRead
团队开源的iOS内存泄漏检测工具,项目中也可以配合leak
使用
网友评论