我尝试使用 Instruments 分析应用程序以查看应用程序使用了多少内存以及是否存在泄漏。
稍微调整一下后,我消除了一些泄漏,现在它没有显示任何泄漏。但是,我注意到每次我推送一些 View Controller 并将其弹回时,内存都会上升,然后会下降一点,但不会达到推送前的水平,例如Live Bytes 显示
- 推送前 1.8 MB
- 推送后 2.1 MB
- 弹出后 2.0 MB
- 第二次推送后 2.1 MB
有趣的是,在第二次(甚至10次)压入后,它并没有增加到之前的值,所以虽然看起来像泄漏,但它可能是某种缓存或其他东西。我首先认为这是我的代码特有的东西,但后来我几乎可以用任何 View Controller 重现它,无论内容多么简单。
对于这种现象是否有合理的解释,或者我只是在我构建的所有示例中做了一些完全错误的事情?
最佳答案
那是发生在自动释放池的 b/c,以及应该为您释放的内存。只要需要,它就会一直存在。当您将更多 viewControllers 压入堆栈时,将创建更多自动释放的对象。有的会比其他的先释放,但是会很及时,所以你的内存波动是正常的。
关于iphone - 使用仪器进行内存分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129608/