分析和工具

时间:2012-02-09 19:19:38

标签: objective-c ios memory-management memory-leaks instruments

嗯,这个问题可能听起来很傻,但...... 当我在分析模式或仪器中运行我的应用程序时,我无法(分析模式)或内存(仪器)泄漏。 这是否意味着我的应用程序100%无内存泄漏?

4 个答案:

答案 0 :(得分:4)

没有。首先,您必须在应用程序中运行每个可能的执行路径/状态序列,以明确地说通过简单测试没有泄漏。更重要的是,真正的内存泄漏,你不释放内存,但不再有参考它是仪器能够检测到的所有泄漏。

然而,那些不是是您可以创建的唯一类似问题。您也可以轻松地丢弃不再需要的数据,从而导致内存增加。这不是真正的泄漏,因为您仍然有对相关数据的引用,只是您没有发布它并且摆脱了对它的引用。

您仍然可以使用分配工具找到此类问题。它不会明确地标记问题,但它将允许您查看是否分配了大量内存,而这些内存以后不会发布。特别是在iOS上,确保在不再需要时放弃已分配的内存非常重要,或者在应用程序终止应用程序之前,应用程序的内存使用量会增加。

答案 1 :(得分:1)

这真的取决于你用泄漏测试它的程度,但请记住,像Leaks一样努力尝试它不是防弹的,但如果你做一份直接的工作,你可以合理地确定你的应用程序。不要忘记使用除泄漏之外的其他工具,分配工具对于获取被遗忘的内存非常有用,只有Leaks不会指出你,但可能同样麻烦。

答案 2 :(得分:-1)

分析时,您的应用程序不会运行,而静态分析器会查看您的代码。关于仪器,请检查您的配置文件配置(在编辑方案中)是否设置为debug。否则,您的应用程序将被删除符号,泄漏工具将无法正常工作。

答案 3 :(得分:-2)

你可以假设它现在处于最佳状态。