Hyp*_*pe1 6 memory-management objective-c uiviewcontroller ios automatic-ref-counting
我想了解Objective-C中的内存管理,我觉得这并不容易,因为我在Objective-C和ARC上相当新,而且我主要用来编写我不需要处理的语言.内存管理很多(或根本没有).
我正在处理的应用程序是在按下按钮后从代码中呈现一个viewController(附带xib文件).在这个视图控制器中,我实例化了几个视图; 我录制了一系列图像(照片来自相机,保存到磁盘),我将其转换为电影,并且我有一个gps跟踪器(mapKit),它在屏幕上显示一个小地图.完成所有操作后,我可以按下一个"完成"按钮[self dismissViewControllerAnimated:YES completion:nil];
viewController动画回到我的rootViewController,因为我在viewController中NSLog的dealloc方法中放了一条消息,我正在被解除,我可以确认这个viewController正在被释放.
问题是我看到使用应用程序后的内存上升(使用情况包括在MapKit地图上拍摄和录制gps位置以及生成电影文件)到大约80 MB,当我按下时这会下降到大约70 MB 'done'所以viewController解散,app返回我的rootViewController.我可以再次呈现相同的viewController,使用它并解除它,应用程序仍将占用大约70MB的内存,不会掉线.这对我来说看起来并不像是一个内存泄漏,因为在这种情况下,我希望每次实例化和解除viewController都能稳定上升内存.即使我在rootViewController中有不同的按钮,它们都实例化了我的viewController类的一个新的独特实例,但情况并非如此.
我想知道:我应该寻找什么或这是预期的行为?也许该应用程序是缓存类以供将来使用?在内存管理正确的情况下,我应该期待一个应用程序在解除所呈现的唯一viewController后恢复到"处女"内存状态(在这种情况下,这将是大约4 MB)?
如果你在Xcode中看到这个内存上升而不是在使用乐器时那么我得到的答案就在这个答案中.
你可以阅读整个答案,它非常深入.但长话短说,在Xcode中,您可以看到操作系统"给予"您的应用程序使用的内存量.这会增加您的应用尝试分配内容的任何时间.它不会降低得那么快,因为操作系统会进行性能猜测,认为您的应用程序将来可能需要更多内存.操作系统将"给定"内存留给您的应用程序比将其取下并稍后将其还原更快.
| 归档时间: |
|
| 查看次数: |
4247 次 |
| 最近记录: |