我正在使用Instruments在我的应用中查找内存泄漏。 当一个对象分配时,在Instrument中显示一个蓝色块(行),如下所示:
当物体被释放时,蓝线将消失。
但是当我在我的应用程序中进行一些操作时,一些蓝色块就不会消失,我怎么能知道这些块实际上在内存中是什么?谢谢!
答案 0 :(得分:0)
在泄漏仪器中,它们显示了在特定时间发生的内存分配。
答案 1 :(得分:0)
选择仪器并查看窗口下半部分的列表。它将显示一个表格或大纲(取决于仪器),列出仪器记录的内容。
对于Allocations工具,它列出了您的应用程序已分配的内容。根据视图设置,它们可能是仍然存活的对象或所有对象,甚至是已释放的对象。
对于Leaks工具,它列出了您的应用程序已分配和泄露的内容(即,不再有任何引用)。请注意,您可能仍会在永远不会使用的内容上浪费不断增加的内存量,而不是因为您没有对它的引用,而是因为它位于只写缓存中(您存储它但从不查找它)或类似的情况。 Bill Bumgarner称这是“废弃的记忆”。
使用任一仪器,您可以单击列表中的➲按钮深入钻取,查看给定类型的分配列表(例如,所有NSImages)或从出生开始发生在单个对象上的所有内容致死后者对于捕获泄漏和过度崩溃崩溃非常有用,这也是为什么Instruments的Zombies模板比NSZombieEnabled好得多。