Apple 的 Xcode 开发环境是否提供任何用于内存泄漏检测的工具?
我对适用于 iPhone SDK 的工具特别感兴趣。目前我最喜欢的业余编程项目平台
所述工具的文档/教程将非常有帮助。
Apple 的 Xcode 开发环境是否提供任何用于内存泄漏检测的工具?
我对适用于 iPhone SDK 的工具特别感兴趣。目前我最喜欢的业余编程项目平台
所述工具的文档/教程将非常有帮助。
有一个专门称为Leaks
并且就像之前的海报所说的那样,运行它的最简单方法是直接从 Xcode 中运行:
运行 -> 从性能工具开始 -> 泄漏
它似乎非常擅长检测内存泄漏,并且对于像我这样的非 C 头来说很容易弄清楚。
Profile
从 Xcode 6 的菜单中选择Product
以启动 Apple 的 Instruments 工具。(该应用程序位于 Xcode 应用程序的包内容中/Applications/Xcode.app/Contents/Applications/
:)
一个商业替代品是OmniObjectMeter。(由 Omni 集团停产)
Clang Static Analyser
非常适合在 C、C++ 和 Objective-C 代码中查找错误:
您可以在 Xcode 中运行这些工具menu -> run -> start with performance tool -> ...
这是使用 xcode 中的仪器检测 ios/mac 应用程序的内存泄漏/性能的链接 从 Xcode 运行仪器的步骤
Apple 的 Xcode 开发环境是否提供任何用于内存泄漏检测的工具?
我对适用于 iPhone SDK 的工具特别感兴趣。
是的。苹果称它们为“仪器”(不仅仅是记忆工具)。
参见苹果的Introduction to Instruments User Guide
. 特别是,请参阅Locating Memory Issues in Your App
。它提供了如何使用面向内存的跟踪模板的示例。
ObjectAlloc 和 MallocDebug 都应该对您有所帮助。如果您安装了整个 SDK,它们将在 Developer->Applications->Performance Tools 中找到。
它们的名称为您提供了关于它们的功能的一个很好的线索,OA,跟踪对象创建和 MA 是一个通用的内存泄漏工具。
我还没有在 iPhone 开发中尝试过它们,但我必须相信它们也可以在那里工作。
假设您已注册 ADC iPhone 开发者网站,请点击以下链接:Instruments User Guide
使用时rustyshelf's solution
请确保您在 iPhone 上而不是在模拟器上进行测试。内存使用情况大不相同。
对主要的内存泄漏工具做了一个总结:iphone-essential-performance-tools-list
步骤 1. 选择分配工具
通过单击右上角的加号按钮,您可以为不同类型的测试添加更多仪器,但我不会在本教程中介绍它们。
步骤 2. 设置仪器设置
在运行任何分析之前,您需要做一些事情。首先,您需要插入安装了您的应用程序的 iOS 设备。它必须是物理设备,因为 iOS 模拟器仍然是一个模拟器,可能无法准确地表示您的应用程序中的内存使用情况或应用程序在内存压力下的执行情况。
要选择您的目标,请单击顶部附近的我的电脑,将鼠标悬停在您的设备上,然后从子菜单中选择您的应用程序:
接下来,有一个面板,您可以在其中更改要查看的分配类型的设置。除了确保选中Created & Persistent气泡外,您无需事先做太多事情。
Step 3. 按记录运行仪器
按下左上角的记录按钮后,您的应用程序将在您的设备上启动,仪器将开始绘制您的分配图表。你需要做的就是运行你的应用程序,关注可能的问题区域,看看分配的内存是否多于释放的内存。这可能意味着要做很多重复性的任务,但你以后会感谢自己的。
您应该看到如下内容:
我建议你运行一次你的应用程序并在内存中达到一个稳定的点,这样你就有一个很好的基线,可以让任何增加都变得明显。当您对有足够的数据进行测试感到满意时,请按左上角的停止按钮。
步骤 4. 分析
要实际设置检查范围,请使用键盘快捷键Command <设置左侧检查范围,使用Command >设置右侧检查范围。在我们的应用程序中,我们有大约 20MB 的基线。
有不同的方法来分析这些数据,我不会在这里介绍,但请注意,有一个完整的下拉菜单可以查看和分析您的数据。
步骤 5. 标记世代
如果您不想过多地处理检查范围,则有一个称为标记生成的功能。在仪器的右侧面板上有一个按钮。
此按钮将根据检查线的位置在仪器的时间线上标记点。它这样做是为了跟踪自上一个标记以来的所有分配,或者如果没有其他标记则从头开始跟踪。您可以在运行分配工具时或停止运行后标记世代,如下例所示:
步骤 6. 检查堆栈跟踪
最后要介绍的是查看堆栈跟踪。为此,您需要设置检查范围以突出显示所有分配,然后查看统计视图,确保在右侧面板上选择了Created & Persistent气泡。在统计视图中,确保 Persistent Bytes 从高到低排序。这里有很多分配,很难理解发生了什么,因为其中很多是系统分配。
深入
这个视图有很多有用的东西,其中一个是右侧大部分黄色的标签,显示每个方法调用占用了多少内存。每个应用程序都是不同的,因此开发人员必须确定突出显示的方法是否存在问题、您可以优化的东西,或者只是应用程序中不可避免的一部分。
在我的例子中,UIColor 变量在我们的应用程序中是持久的和使用的,因此在我们的应用程序的整个生命周期中都是可以接受的。
也试试这个,一个从 Xcode 工具开始的简单教程
内存泄漏工具:http ://www.raywenderlich.com/2696/
基本:http ://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode