我的一个应用程序出现内存问题,我已将 Instruments> Activity monitor 中定义的“真实内存”确定为可能的罪魁祸首。
我的应用程序在 UIScrollViews 分配大的 UIImages。有一个 CIImageFilter 应用于其中一个图像。活动监视器显示,在第一次推送包含带有大图像的滚动视图的视图控制器时,实际内存使用量跃升至 300mb 左右。随后的推送/弹出将其提高到大约 500mb:
我读到“实时字节”不计算纹理和 CALayers 使用的内存,所以我的问题是:如何正确释放我的 Image/Scrollviews 的 CALayers 使用的内存?
见右侧真实内存使用蓝色饼图:
此进程的真实内存和虚拟内存都是最高的:
困扰我的是,当弹出该控制器时,我试图清理我的大滚动视图和图像,“实时字节”的数字下降到大约 5mb,而“真实内存”保持高得离谱(~500 mb) :
ContainerScrollView* container = ...;
[container.view removeFromSuperview];
container.view = nil;
这是分配分析: