内存泄漏检测工具(Memory leak detection tools)

2019-07-18 11:01发布

难道苹果的Xcode开发环境提供了内存泄漏检测任何工具?

我是在适用于iPhone的SDK工具特别感兴趣。 目前我.584编程项目最喜欢的平台

单证/供称工具教程将是非常有益的。

Answer 1:

有一个专门打电话Leaks并像以前的海报说,运行它的最简单的方法是直接从Xcode的:

运行 - >启动与性能工具 - >泄漏

这似乎在检测内存泄漏非常好,而且很容易让非C头像我弄清楚。



Answer 2:

选择ProfileProduct在Xcode 6菜单启动苹果的仪器工具。 (应用程序位于Xcode应用程序的软件包内容内: /Applications/Xcode.app/Contents/Applications/

其中的一个商业是OmniObjectMeter 。 (由The全组停产)



Answer 3:

Clang Static Analyser是非常适合在C,C ++和Objective-C代码查找错误:



Answer 4:

这里是链接使用仪器在Xcode来检测内存泄漏/你表现IOS / Mac适用的步骤,从运行的Xcode工具



Answer 5:

您可以通过在Xcode运行工具menu -> run -> start with performance tool -> ...



Answer 6:

难道苹果的Xcode开发环境提供了内存泄漏检测任何工具?

我是在适用于iPhone的SDK工具特别感兴趣。

是。 苹果称他们为“仪器”(有不止记忆工具)。

见苹果的Introduction to Instruments User Guide 。 特别是看到Locating Memory Issues in Your App 。 它提供了如何使用面向存储器的跟踪模板实例。



Answer 7:

和ObjectAlloc中即MallocDebug都应该对你有所帮助。 如果你安装了整个SDK,他们将在开发技术中找到>应用程序 - >性能工具。

他们的名字给你一个很好的线索,它们的功能,OA,跟踪对象创建和马是一般的内存泄漏的工具。

我没有与iPhone的开发尝试过,但我不得不相信,他们将在那里工作为好。

假设您已经注册了ADC iPhone开发者网站,这里的链接如下: Instruments User Guide



Answer 8:

当使用rustyshelf's solution ,确保你在iPhone上,而不是在模拟器上测试。 内存使用情况是截然不同的。



Answer 9:

取得的主要内存泄漏工具总结: iphone-essential-performance-tools-list



Answer 10:

试试这个也是,一个简单的教程,开始和Xcode insturments

内存泄漏的工具: http://www.raywenderlich.com/2696/

基本: http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode



Answer 11:

步骤1.挑选分配仪器

  1. 选择分配性能测试模板:

  1. 在主仪表界面,点击虚拟机跟踪,如果存在的话,然后按Delete键,因为你不会需要特定的工具:

通过点击右上角的加号按钮,你可以添加更多的仪器不同类型的测试,但我不会在本教程中覆盖它们。

第2步:设置您的仪器设置

在运行任何分析之前,有你需要做的几件事情。 首先,你需要在已经在其上安装该应用的iOS设备堵塞。 它必须是一个物理设备,因为iPhone模拟器仍然是一个模拟器,可能不能准确地代表在您的应用程序或如何应用程序可能会在内存压力下执行内存使用。

要选择你的目标,单击顶部附近我的电脑 ,将鼠标悬停在您的设备,然后选择你的应用程序从子菜单:

其次,有一个面板,你可以改变设置的类型,您将浏览的分配。 除了确保在创建和持久性泡沫被选中,没有太多你需要事先做。

步骤3.按记录运行仪器

一旦按下左上角录制按钮,您的应用程序将启动您的设备上,并且仪器将开始图表你分配。 所有你需要做的,是通过你的应用程序运行,着眼于可能出现问题的领域,看看是否比解除分配更多的内存分配。 这可能意味着做了很多重复性的工作,但后来你会感谢自己。

您应该看到这样的事情:

我建议通过您的应用程序运行一次,以获得一个稳定的点在内存中,以便你有一个很好的基础,这将使任何增加明显。 当你满意你有足够的数据来进行测试,按下左上角的停止按钮。

第4步:分析

  1. 我做的第一件事情就是把我的检查范围来衡量我的基线总持续字节。 这持续字节数坐落在分配摘要。

实际设置的检查范围,使用键盘快捷键Command <左检查范围,并命令>为正确的检查范围。 在我们的应用程序,我们有大约20MB的基线。

  1. 然后,我在我的右检查范围移动到我已经通过应用程序再次运行,回来给我们的根点。 在这里,你可以看到内存是差不多的。 那么,这样做了几次,看到你的记忆回到我们的底线,你可以假设没有大的内存问题。

有不同的方法来分析这些数据,我将不包括在这里,但要注意,有方式来查看和分析数据的整体下拉菜单。

第5步:标记代

如果你不喜欢对付检查的范围为多,有一个叫马克生成功能。 有仪器的右侧面板上的按钮。

此按钮将根据在检查线路标记工具的时间轴上的点。 它这样做是为了让所有的分配,因为之前的标记,或者从一开始的轨道,如果没有其他的痕迹。 你可以标记为正在运行的分配仪器或已经停止运行后,在这个例子中世代:

第6步:检查出来的堆栈跟踪

对保险的最后一件事是看堆栈跟踪。 对于这一点,你要设置你的检查范围,以突出显示所有的分配,然后看看统计数据视图,确保创建和持久的气泡在右侧面板中选择。 在统计信息视图,确保持久字节从最高排序到最低。 这里有很多分配的,它可以是很难理解到底是怎么回事,因为他们中的很多都是系统分配。

去深

  1. 看看最大的分配,然后点击右向箭头。 很多时候会有你所点击的那些内部分配,许多人会不会意味着你。

  1. 当你点击箭头后,突出不同的分配,继续寻找正确的面板上延伸的细节。 最终,你会遇到,导致实际的代码在你的项目中,告诉你什么样的问题可能是一些大胆的文字。

  1. 如果您双击该堆栈跟踪大胆的项目之一,它会带你到实际的代码(假设你跑你自己的应用程序分配)。

  1. 有一个关于这个观点,一个是右侧多为黄色标签,以显示你的每个方法调用了多少内存占用很多有用的东西。 每个应用程序是不同的,所以你的开发者,有权决定是否加亮的方法是一个问题,有些东西你可以优化,或者您的应用程序只是一个不可避免的一部分。

  2. 在我的情况下,变量的UIColor的东西,是持久的,在我们的应用中使用,因此,在我们的应用程序的生命可以接受的。

这里找到



文章来源: Memory leak detection tools