UIWebview,WKWebview,循环引用的内存检测

这两天lzXcode自带的leak工具对项目跑了一遍,发现了一个三方用的UIWebview的内存泄漏问题(其实就是简单的初始化),于是我自己写了个demo,对于UIWebview,WKWebview,循环引用分别都跑了一遍,以下是测试结果:

  • UIWebview

首先用leak查看结果如下:

屏幕快照 2019-04-02 下午2.21.29.png

在用Allocations查看,在每次进入TestviewController的时候,在网页加载完全的时候Mark Generation一下,就有了上面的小子,可以看到当前内存占用情况,打了4个标记,结果如下:

133.86 MiB
134.36 MiB
140.06 MiB
150.02 MiB

屏幕快照 2019-04-02 下午2.22.50.png

Xcode中结果如下:

可以看到峰值达到了266.4MB

屏幕快照 2019-04-02 下午2.18.31.png
  • WKWebview
    首先用leak查看结果如下:
    屏幕快照 2019-04-02 下午2.25.43.png

在用Allocations查看,步骤跟UIWebview一样,结果如下:

108.48 MiB
108.61 MiB
108.62 MiB
108.61 MiB

屏幕快照 2019-04-02 下午2.26.06.png

Xcode中结果如下:
可以看到峰值只有147.9MB

屏幕快照 2019-04-02 下午2.11.52.png

  • 循环引用
    首先用leak查看结果如下:
    屏幕快照 2019-04-02 下午2.32.10.png

在用Allocations查看,结果如下:

9.92 MiB
9.96 MiB
9.97 MiB
9.98 MiB

屏幕快照 2019-04-02 下午2.30.38.png

Xcode中结果如下:
可以看到内存增长的很缓慢

屏幕快照 2019-04-02 下午2.14.52.png

结论:
1.UIWebview,WKWebview,循环引用都有内存泄漏问题,都可以用leak检测到

  1. WKWebview相对于UIWebview内存变化更稳定,而且内存开销相对小很多

ps:MLeaksFinderWeRead 团队开源的iOS内存泄漏检测工具,项目中也可以配合leak使用

你可能感兴趣的:(UIWebview,WKWebview,循环引用的内存检测)