在调优应用程序时,Instruments扮演着重要角色。它提供了一套工具,用于监控性能。通过它的泄漏检测,你可以跟踪、识别和解决程序中的内存泄漏问题。秘诀2-1显示了一个存在两处泄漏问题的应用程序:一处是用malloc()构建了一个字符串,但是没有调用相应的free(),另一处是本章前面展示的NSArray例子。
要看到Instruments的实际应用,首先需要加载秘诀2-1的示例项目。在Xcode中选择Run(运行)→Run with Performance Tool(使用性能工具运行)→Leaks(泄漏)。这将启动Instruments和模拟器。应用程序开始在模拟器中运行,Instruments则观察它的进展。
单击应用程序中的任意一个按钮使内存泄漏。String按钮泄漏一个128B的已分配内存的块。Array按钮泄漏一个32B的NSArray。在Instruments中,内存泄漏以橘色三角形的形式出现。三角形的大小表明泄漏的大小。
为了查看各处泄漏的列表,必须单击Leaks行,如图2-11所示。默认情况下,ObjectAlloc行被选中。每处泄漏显示泄漏的内存量、泄漏开始的地址以及泄漏对象的类型。

图2-11 Instruments跟踪由不能回收的内存导致的泄漏