iOS-使用仪器工具定位泄漏

时间:2019-03-27 12:10:35

标签: ios memory-leaks instruments xcode-instruments

因此,我正在尝试使用泄漏仪器在我的应用程序中查找泄漏。 当应用程序午餐时,我可以看到106个泄漏,而我找不到它们。

enter image description here

在图像中,您可以看到列表的一部分,但是我该如何深入到生成泄漏的类或代码行呢?

我想念什么吗?

感谢进阶

3 个答案:

答案 0 :(得分:1)

您可以在屏幕右侧看到堆栈三叉戟。然后滚动到创建泄漏的类和方法。有时候很难理解为什么会有泄漏。

看看我的图片enter image description here

我有TermsViewController,并且我有NSMuttableAttributed字符串,它会导致内存泄漏。另外,如果我使用TermsViewController.setupInfoText()选择该行,则会打开代码。

答案 1 :(得分:1)

查找泄漏并非如此简单。您需要戴上侦探帽,从外套中拿出放大镜,然后开始寻找踪迹。即

对于每个泄漏的对象,都有一个负责任的库。如果是UIKit,Foundation或任何低级的东西,您将无法查明导致泄漏的代码的位置,因为这些库都是二进制文件的形式。

如果负责编写的库是您正在编写的库,则可以通过在右侧的堆栈跟踪面板中单击正确的方法来转到代码。一个提示是,如果有相应的代码可用,则堆栈跟踪面板中列出的方法将突出显示。

但是,由于不是那么简单,通常您自己的代码会导致某些内部库泄漏,这很难调试。在开始之前,您需要阅读一些教程并练习材料。在stackoverflow上肯定无法解决某些问题。

答案 2 :(得分:0)

如果要查找分配泄漏内存的代码,请使用跳转栏切换到调用树视图。要在调用树视图中查找代码,请反转调用树视图并隐藏系统库。

enter image description here

在调用树视图中双击一个函数将使您深入到分配泄漏内存的代码行。

阅读以下文章,以获取有关使用乐器查找内存泄漏的更多详细信息:

Measuring Your App's Memory Usage with Instruments