问题描述
|
我尝试使用Instruments来分析应用程序,以查看该应用程序正在使用多少内存以及是否存在泄漏。
经过一点调整后,我摆脱了几次泄漏,现在没有任何泄漏。但是,我注意到每次我推一些视图控制器并将其弹出时,内存都会增加,然后再降低一点,但不会达到推送之前的水平,例如实时字节显示
推送前1.8 MB
推送后2.1 MB
弹出后2.0 MB
第二次推送后为2.1 MB
有趣的是,在第二次(甚至十次)推动它之后,它并没有超过先前的值,因此尽管看起来像是泄漏,但它可能是某种缓存或某种东西。我首先认为它是我的代码特有的,但是后来无论内容多么简单,我都可以用任何视图控制器对其进行重现。
对于这种现象是否有合理的解释,还是我在构建的所有示例中所做的事情都是完全错误的?
解决方法
那就是自动释放池的b / c和应该为您释放的内存。它会保留所需的时间。当您将更多viewControllers推入堆栈时,会创建更多自动释放的对象。其中一些将在其他版本之前发布,但是会及时发布,因此您的内存波动是正常的。