2011-05-25 63 views
4

我尝试使用Instruments分析应用程序,以查看应用程序使用了多少内存以及是否存在某些泄漏。使用仪器进行内存分析

稍微调整了一下之后,我摆脱了一些泄漏,现在它没有显示出来。但是,我注意到每次我推动某个视图控制器并将其弹回时,内存会上升,然后稍微下降,但不会达到推动之前的水平,例如, 直播字节呈现推后推

  • 2.1 MB第二个推动弹出后
  • 2.0 MB后
  • 2.1 MB
  • 有趣的是,之前

    • 1.8 MB ,在第二次(甚至10次)推动后,它不会超过前面的值,所以虽然看起来像是泄漏,但它可能是某种缓存或某种东西。我首先认为这是我的代码特有的东西,但后来我可以用任何视图控制器重现它,无论内容如何简单。

      对这种现象是否有合理的解释,或者我在所有构建的例子中做了一些完全错误的事情?

    回答

    3

    这是发生自动释放池的B/C,以及假设将为您发布的内存。它只要它需要就停留。当您在堆栈上推送更多viewController时,会创建更多的自动释放对象。他们中的一些将会早些时候被释放,但它会很及时,所以你的记忆起伏是正常的。