追踪ios内存泄漏源
2018-03-22 本文已影响17人
小杰杰杰
原文链接Locating the source of a memory leak.
开启Malloc Stack Logging:
![](https://img.haomeiwen.com/i263551/a0cdfba445e701da.png)
![](https://img.haomeiwen.com/i263551/eebc2d117d5ce2ba.png)
![](https://img.haomeiwen.com/i263551/905027d78dc17714.png)
运行程序:
切换到如下视图
![](https://img.haomeiwen.com/i263551/c0342a8ff6425b22.png)
![](https://img.haomeiwen.com/i263551/4a792a69b1173c34.png)
你现在有了一个高级的内存调试器。如果应用程序运行时你点击可视化调试器,您可以像下面一样浏览内存泄漏:
![](https://img.haomeiwen.com/i263551/30df0b2c867049c5.png)
这都是一样的,如果你现在看看你在右边的面板可以直接跳转到导致泄漏行:
![](https://img.haomeiwen.com/i263551/764236535d22982e.png)
![](https://img.haomeiwen.com/i263551/f85f7ccd57dbfd7c.png)
我必须重申Emilien Stremsdoerfer指出的memory debugger 有点误导。在我的特殊情况下,问题的根源最终出现在第三方框架,缺乏一个弱声明——这不被Xcode列为内存泄漏。然而,感谢memory graph,我可以记录下来并提交PR给第三方框架。
我还想说,你应该打开和关闭这个选项,当你在调试内存泄漏时。打开Malloc堆栈日志时,一些性质的log并不会被调试器记录,这样使你可很难调试代码。