我正在创建一个应用程序,它是一种画廊 - 它以全屏查看器的形式显示不同的媒体内容。分配工具显示,使用应用程序时 Live Bytes 参数不会增长到超过 40 Mb。同时,在我滑动页面 20-30 次后,该应用程序 100% 被杀死。我检查了 Dirty Memory 参数,发现它比 Live Bytes 大小大 10 倍。大部分脏内存消耗了 Image IO:
编辑,另一个屏幕截图:
上面的分配峰值是切换视频/图像媒体内容。问题是脏内存几乎呈线性增长,我需要以某种方式释放它。
现在关于应用程序设计。应用程序屏幕有一个水平滚动视图。滚动视图包含包含多个图像的视频或拼贴对象。为了节省内存,一次只创建三个页面 - 当前页面和左侧/右侧页面。所以页面总是在滑动滚动视图时创建和删除。
[UIImage imageWithContentOfFile: path]
我使用方法加载的所有图像。Collage 对象将 UIImage 实例存储在 imagesArray 中。在 dealloc 方法中,imagesArray 属性被清除。
所以,问题:
- 它是一种系统错误吗
[UIImage imageWithContentOfFile?]
- 是图像 IO 缓存吗?
- 我可以清除它吗?