使用仪器工具来定位泄漏

问题描述 投票:1回答:3

我试图使用泄漏工具在我的应用程序中寻找泄漏。当应用程序启动时,我可以看到106个泄漏,我在寻找它们时遇到了麻烦。

enter image description here

在图片中,您可以看到部分列表,但我如何才能深入到产生泄漏的类或代码行?

ios memory-leaks instruments xcode-instruments
3个回答
1
投票

寻找一个泄漏不是那么简单。你需要戴上侦探帽,拿出你的放大镜从你的外套,并开始寻找线索。

每一个泄露的对象都有一个负责任的库。如果是UIKit、Foundation或任何低级别的库,你将无法准确地指出导致泄漏的代码位置,因为这些库是以二进制文件的形式存在的。

如果负责的库是你正在编写的库,那么你可以通过点击右边的堆栈跟踪面板中的正确方法来进入代码。有一个提示是,如果有相应的代码可用,那么堆栈跟踪面板中列出的方法就会变成高亮显示。

但是,由于不是那么直接,往往你自己的一段代码会导致一些内部库的泄漏,很难调试。你需要先去看一些教程和练习资料再开始。有些东西肯定不能在stackoverflow上回答。


1
投票

你可以在屏幕右侧看到堆栈的三视图。而后滚动到产生泄漏的类和方法。有时很难理解为什么你会有泄漏。

请看我的图片 enter image description here

我有TermsViewController,我有NSMuttableAttributed字符串,这会造成内存泄漏。另外,如果我用TermsViewController.setupInfoText()选择行,就会打开代码。


0
投票

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

enter image description here

在调用树视图中双击你的一个函数将让你钻到分配泄漏内存的代码行。

阅读下面的文章,了解更多关于使用 Instruments 寻找内存泄漏的详细信息。

使用仪器测量你的应用程序的内存使用情况

© www.soinside.com 2019 - 2024. All rights reserved.