• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - ImageIO_PNG_DATA 在应用程序从后台移动到前台后继续增长

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:58:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个应用程序,我在其中使用了大量图像,但我发现应用程序内存占用存在异常问题。我正在使用 imageNamed 方法来初始化 UIImage 对象。从我读到的文档中, imageNamed 将内存保存在缓存中,并且不会每次都重新加载图像。这对我有用,因为我的应用程序仅基于图像,但在我的情况下,似乎每次我的应用程序从 background 移动到 foreground 时,图像都会再次加载。我觉得这是因为当我在每一代中为应用程序进行内存分析时,每当我从后台移动到前台时,在 VM:ImageIO_PNG_DATA 中消耗的内存量大大增加,最终我的应用程序崩溃了,因为它消耗更多超过 600 MB。在某些地方我读到我们应该使用 imageWithContentsOfFile 来避免这个问题,但我不确定这是否是正确的方法。

请指导我。



Best Answer-推荐答案


docs说:“如果您有一个只显示一次的图像文件并希望确保它不会被添加到系统的缓存中,您应该使用 imageWithContentsOfFile: 创建您的图像。这将保持将您的单次使用图像从系统图像缓存中提取出来,这可能会改善您应用的内存使用特性。”
所以,如果你的图片没有被重复使用,你应该使用 imageWithContentsOfFile: 而不是 imageNamed:

另外一点是这两种方法都创建了自动释放对象。即使这些对象不再使用,它​​们也只有在自动释放池耗尽时才会从内存中删除。如果您没有设置自己的自动释放池,它可能很少会被耗尽。如果您使用类似

的 block 设置自己的自动释放池,您可能会使用更少的内存
@autoreleasepool {
    // Your code here
} // @autoreleasepool

关于ios - ImageIO_PNG_DATA 在应用程序从后台移动到前台后继续增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23868754/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap