我的某个应用程序存在内存问题,并且我已经确定了“实际内存”,如“仪器”中所定义。活动监测可能是罪魁祸首。
我的应用在UIScrollViews 中分配大型UIImages。有一个CIImageFilter应用于其中一个图像。活动监视器显示,在第一次按下包含大图像的滚动视图的视图控制器时,实际内存使用量将跳至300mb左右。后续推送/弹出将其提升至约500mb:
我读到“Live Bytes”不计算纹理和CALayers使用的内存,所以我的问题是:如何正确释放我的图像/滚动浏览的CALayers使用的内存? < / p>
请参阅右侧的实际内存使用情况蓝色饼图:
实际和虚拟内存都是此过程中最高的:
困扰我的是我在弹出控制器时试图清理我的大型滚动视图和图像,“实时字节”的数字下降到大约5mb,而“真实内存”保持高得惊人(〜 500 mb):
ContainerScrollView* container = ...;
[container.view removeFromSuperview];
container.view = nil;
以下是分配分析:
答案 0 :(得分:1)
我在这里找到了一个遇到类似问题的人:
Mysterious CoreImage memory leak using ARC
答案(我真的希望如此)似乎开始使用NSData dataWithContentsOfFile:
,然后创建UIImage imageWithData:
。有用户选择的图像?将其写入临时文件并将其读回。我不相信任何其他图像方法,因为在我的12小时测试中,它们似乎在iOS 6.1.2中对大图像视图表现不合理。