【发布时间】:2012-03-02 07:15:56
【问题描述】:
嗯,这个问题可能听起来很傻,但是... 当我在分析模式下或使用仪器运行我的应用程序时,我不可能(分析模式)或内存(仪器)泄漏。 这是否意味着我的应用 100% 没有内存泄漏?
【问题讨论】:
标签: objective-c ios memory-management memory-leaks instruments
嗯,这个问题可能听起来很傻,但是... 当我在分析模式下或使用仪器运行我的应用程序时,我不可能(分析模式)或内存(仪器)泄漏。 这是否意味着我的应用 100% 没有内存泄漏?
【问题讨论】:
标签: objective-c ios memory-management memory-leaks instruments
你可以假设它现在处于最佳状态。
【讨论】:
没有。一方面,您必须在应用程序中运行所有可能的执行路径/状态序列,以通过简单的测试明确表示没有泄漏。更重要的是,真正的内存泄漏,即您不释放内存但不再引用它的地方,是仪器能够检测到的所有泄漏。
但是,这些不是您可以创建的唯一类似问题。您也可以轻松地不丢弃不再实际需要的数据,从而导致内存增加。这不是真正的泄漏,因为您仍然有对相关数据的引用,只是您还没有发布它并摆脱了对它的引用。
您仍然可以使用分配工具发现此类问题。它不会明确标记问题,但它可以让您查看是否分配了很多您以后不会释放的内存。尤其是在 iOS 上,确保在不再需要分配的内存时放弃分配的内存非常重要,否则应用的内存使用量将会增长,直到操作系统终止您的应用。
【讨论】:
这实际上取决于您对泄漏的测试效果如何,但请记住,尽管 Leaks 尽力尝试它并不是万无一失的,但如果您完成工作,您可以合理地确定您的应用程序。不要忘记使用泄漏以外的其他工具,分配工具可用于拾取废弃的内存,而泄漏不会向您指出,但可能同样麻烦。
【讨论】:
当您分析时,您的应用程序不会运行,而是静态分析器会查看您的代码。关于仪器,检查您的配置文件配置(在编辑方案中)是否设置为调试。否则,您的应用程序将被去除符号,并且泄漏工具将无法工作。
【讨论】: