2012-02-09 56 views
1

嗯,这个问题可能听起来很傻,但是...... 当我运行我的应用程序在分析模式或工具我没有得到任何可能的(分析模式)或内存(仪器)泄漏。 这是否意味着我的应用程序是100%内存泄漏免费?分析和仪器

回答

4

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

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

您仍然可以使用分配工具找到这种问题。它不会明确地标记问题,但它可以让你看到你是否分配了很多你以后不会发布的内存。尤其是在iOS上,确保在不再需要时放弃分配的内存,或者在操作系统终止您的应用程序之前,您的应用程序的内存使用量将不断增加,这一点非常重要。

+0

那么,我做了一些测试,我认为我有你在第三段注意到的问题。我的内存(活动字节数)有一点增加,不会受到Allocations的测试。该部分代码只是在两个视图之间切换。我相信这是一个问题,对吗?实时字节显示在视图间切换时,每10次约20kb的内存使用量增长。 – objlv 2012-02-09 19:58:21

+1

是的 - 这可能是一个问题。或者它可能是一个最终会被修剪的缓存。堆积分析是下一步。 http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/ – bbum 2012-02-09 20:25:12

+0

I我会检查一下。谢谢 ! – objlv 2012-02-09 20:53:51

-2

你可以认为它是在最佳状态,现在在它可以。

+1

不是一个远射。大约有几十种方法可以分配内存,既不是泄漏,也不是分析器会检测到的内存,但仍会导致内存耗尽导致崩溃。 – bbum 2012-02-09 20:25:45

1

这真的取决于你如何与泄漏测试,但请记住,硬如泄漏尝试它不是防弹的,但如果你通过工作做了,你可以确信你的应用程序。不要忘记还要使用泄漏以外的工具,分配工具对拾取废弃内存非常有用,泄漏内存不会泄漏给您,但可能同样麻烦。

-1

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

+0

不正确;泄漏的工作以及它有或没有符号。 – bbum 2012-02-09 20:26:05