内存泄漏检测工具
回答
运行在Xcode工具有一个专门打电话Leaks
和像以前的海报说,运行它的最简单的方法是直接从Xcode的:
运行 - >启动与性能工具 - >泄漏
它在检测内存泄漏方面看起来非常好,对于像我这样的Non-C Head来说,很容易找出。
ObjectAlloc和MallocDebug应该对你有帮助。如果您安装了整个SDK,可以在Developer-> Applications-> Performance Tools中找到它们。
他们的名字给你一个很好的线索,就其功能而言,OA跟踪对象的创建,MA是一个通用的内存泄漏工具。
我还没有尝试过iPhone开发,但我必须相信他们也会在那里工作。从在Xcode 6 Product
菜单启动苹果的仪器工具Instruments User Guide
选择Profile
:
假设你已经注册了ADC iPhone开发者网站,这里的链接可循。 (该应用程序位于Xcode应用程序的包内容中:/Applications/Xcode.app/Contents/Applications/
)
商业替代方案是
OmniObjectMeter。
(由奥姆尼集团已停产)
OmniObjectMeter现在可以免费下载。 – Tony 2011-03-25 10:50:18
是否有关于如何使用Apple的乐器的教程? – 2011-06-19 08:56:28
@nute:看看苹果网站上的WWDC视频。 – titaniumdecoy 2012-02-24 17:14:01
您可以通过menu -> run -> start with performance tool -> ...
的Clang Static Analyser
是非常适合在C,C++和Objective-C代码查找错误:
当使用rustyshelf's solution
确保测试在iPhone上,而不是在模拟器上。内存使用情况显着不同。
做了一个总结的主内存泄漏的工具:iphone-essential-performance-tools-list
难道苹果的Xcode开发环境提供了内存泄漏检测任何工具?
我对适用于iPhone SDK的工具特别感兴趣。
是的。苹果称它们为“乐器”(不仅仅是记忆工具)。
请参阅Apple的Introduction to Instruments User Guide
。具体见Locating Memory Issues in Your App
。它提供了如何使用面向内存的跟踪模板的示例。
这里是链接使用仪器从Xcode中来检测内存泄漏/你表现IOS/MAC应用 Steps to run instrument from Xcode
试试这个也是,一个简单的教程,开始在Xcode insturments
内存泄漏工具:http://www.raywenderlich.com/2696/
基础:http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode
步骤1.挑选分配仪器
- 选择用于分配的性能测试模板:
- 在主仪器界面,单击虚拟机跟踪器(如果存在),然后按Delete键,因为您不需要该特定仪器:
- 我做的第一件事情就是把我的检查范围来衡量我的基线总持续字节。该持久字节号位于分配摘要的正下方。
- 然后,我将我的右检查范围内,我已经通过应用程序再次运行,回来给我们的根点。在这里,你可以看到内存大致相同。所以,通过再做几次这样的事情,看到你的记忆回到我们的基线,你可以假设没有重大的记忆问题。
- 看最大的分配,然后点击右向箭头。很多时候在你点击的内容中会有分配,其中很多对你没有意义。
- 在突出显示点击的箭头后不同分配,继续寻找正确的面板上的扩展的细节。最终你会遇到一些粗体的文本,这会导致项目中的实际代码,告诉你这个问题可能是什么。
- 如果双击堆栈跟踪大胆的项目之一,它会带你到实际的代码(假设你跑的分配你拥有的应用程序)。
有一个关于这个观点,一个是右侧的大多是黄色的标签,以显示你很多有用的东西到底有多少内存每个方法调用正在接受。每个应用程序是不同的,所以你的开发者,有权决定是否加亮的方法是一个问题,有些东西你可以优化,或者您的应用程序只是一个不可避免的一部分。
在我的情况下,变量的UIColor的东西,是持久的,在我们的应用中使用,因此,在我们的应用程序的生命可以接受的。
通过点击右上角的加号按钮,你可以添加更多的仪器不同类型的测试,但我不会在本教程中覆盖它们。
第2步:设置您的仪器设置
运行任何分析之前,有你需要做的几件事情。首先,您需要插入安装了应用程序的iOS设备。它必须是物理设备,因为iOS模拟器仍然是模拟器,可能无法准确地表示应用程序中的内存使用情况,或者应用程序在内存压力下的表现。
来挑选你的目标,单击顶部附近我的电脑,将鼠标悬停在您的设备,然后选择您的应用程序从子菜单:
其次,有一个面板,您可以更改您将查看的分配类型的设置。除了确保创建&持续泡沫被检查,你没有太多需要事先做。
步骤3.按记录运行仪器
一旦按下左上角录制按钮,您的应用程序将启动您的设备上,并且仪器将开始图表你的分配。您需要在此处执行的操作是通过您的应用程序执行的,重点讨论可能的问题区域,以查看是否有更多的内存分配而不是释放。这可能意味着做了很多重复的任务,但是稍后你会感谢你自己。
您应该看到这样的事情:
我建议通过您的应用程序运行一次,以获得一个稳定的点在内存中,以便你有一个很好的基础,这将使任何增加明显。当您满意时,您有足够的数据进行测试,请按左上方的停止按钮。
步骤4.分析
实际设置的检查范围,使用键盘快捷键命令<左检查范围和命令>为正确的检查范围。在我们的应用程序中,我们的基线大约为20MB。
有分析这个数据,我将不包括在这里,但要注意,有方式来查看和分析数据的整体下拉菜单中选择不同的方式。
第5步标志代
如果你不喜欢对付检查的范围为多,有一个叫马克生成功能。仪器的右侧面板上有一个按钮。
该按钮将根据在检查线上是标记仪器的时间轴上的点。它是这样做的,以便跟踪自上一个商标以来的所有分配,或者如果没有其他商标则从头开始。当你运行的是分配工具可以标记代或已经停止运行后,如本例:
步骤6.检查出来的堆栈跟踪
的最后一件事以覆盖正在看堆栈跟踪。对于这一点,你要设置你的检查范围,以突出显示所有的分配,然后看看统计数据视图,确保创建&持续泡在右侧面板中选择。在统计视图中,确保持久字节从最高到最低排序。这里有很多分配的,它可以是很难理解到底是怎么回事,因为他们中的很多都是系统分配。
去深
- 1. 内存泄漏没有检测到CRT内存泄漏检测
- 2. VisualVM内存泄漏检测
- 3. 检测TWebModule内存泄漏
- 4. iPhone内存泄漏工具
- 5. linux内核模块中内存泄漏检测工具
- 6. 泄漏性能工具没有检测到明显的内存泄漏
- 7. 分配属性时泄漏内存工具无法检测到泄漏,因此泄漏是否存在?
- 8. Cygwin中的内存泄漏检测工具
- 9. G ++多平台的内存泄漏检测工具
- 10. Xcode 4中的内存泄漏检测工具
- 11. 的valgrind(MEMCHECK)工具因此未检测内存泄漏
- 12. 使用AfxEnableMemoryTracking到检测内存泄漏
- 13. C++内存泄漏检测方法
- 14. 如何检测内存泄漏
- 15. 检测不到的内存泄漏
- 16. FastMM无法检测到内存泄漏
- 17. Valgrind在fclose检测到内存泄漏()
- 18. C++内存泄漏自动检测库
- 19. Windows API调用内存泄漏检测
- 20. 检测到的内存泄漏
- 21. DLL中的内存泄漏检测
- 22. valgrind如何检测内存泄漏
- 23. 检测内存泄漏使用PerfView
- 24. Solaris 9:内存泄漏检测
- 25. 查找JavaScript内存泄漏的工具
- 26. iphone/ipad内存泄漏仪器工具
- 27. cygwin上的内存泄漏工具
- 28. 内存泄漏测试
- 29. 内存泄漏测试
- 30. Xcode内存泄漏检查
如何安装整个SDK? – 2012-06-06 04:29:56