文档章节

IOS 内存占用问题之 ImageIO_PNG_Data

陈圣晗
 陈圣晗
发布于 2015/06/18 15:35
字数 339
阅读 136
收藏 0

iOS 内存占用问题之ImageIO_PNG_Data

问题来源

做APP调试的时候,发现总是收到 didReceiveMemoryWarning,打开 Instruments 的 Memory Leaks 一看,ImageIO_PNG_Data占了好大的内存(近100MB)。

其实这个问题零零碎碎地在很多地方都有人提到过,但是提到ImageIO_PNG_Data似乎不多,碰到问题的时候不好搜索,这里着重提一下。

问题分析

这篇文章里提到了关于图片缓存的问题,看起来和我们碰到的这个问题有关。

具体来说,就是我们通常会用两种方式加载图片:

UIImage *img = [UIImage imageNamed:@"myImage"]; // caching
// or
UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"]; // no caching

根据苹果官方参考:

If you have an image file that will only be displayed once and wish to ensure that it does not get added to the system’s cache, you should instead create your image using imageWithContentsOfFile:. This will keep your single-use image out of the system image cache, potentially improving the memory use characteristics of your app.

  • imageNamed: 会将图片加载到系统缓存,适合需要重复利用的图片,提高加载速度

  • imageWithContentsOfFile: 不会将图片加载到系统缓存,适合不重复利用的图片

问题解决

  • 检查使用到 imageNamed: 的地方,根据需求场景,将不必要缓存的部分全部替换为 imageWithContentsOfFile:,会发现ImageIO_PNG_Data的内存占用瞬间就降下来了。

© 著作权归作者所有

共有 人打赏支持
陈圣晗
粉丝 5
博文 12
码字总数 7377
作品 2
闵行
iOS与JS交互之WKWebView-WKScriptMessageHandler协议

级别:★★☆☆☆ 标签:「iOS与JS交互」「WKWebView与JS交互」「WKJSMessageHandler」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
09/02
0
0
React Native VS Flutter评测

React Native VS Flutter评测 编辑于 11:34

纪洪波
06/27
0
0
软件架构杂谈(三) --- APNS

浅谈软件架构(三) —— APNS ----cnyinlinux 本文将讨论的是常见软件架构中的三角关系——APNS。 APNS是Apple Push Notification Service的简称,即苹果推送通知服务。它用在当前很火热的苹果...

cnyinlinux
2015/06/09
0
0
那些在学习iOS开发前就应该知道的事(part 2)

英文原文:Things I wish I had known before starting iOS development—Part 2 如果你还没读这篇文章的第一部分,请先读完了再来看第二部分。 那些在学习iOS开发前就应该知道的事(part 1)...

TomatosX
2015/06/12
0
0
25条提高iOS App性能的技巧和诀窍

这篇文章来自iOS Tutorial Team 成员 Marcelo Fabri, 他是 Movile 的一个iOS开发者. Check out his personal website or follow him on Twitter.原文地址 当我们开发iOS应用时,好的性能对我...

mahb520
2015/01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【挑战剑指offer】系列03:逆序打印单链表

本系列的算法原题来自于“牛客网-剑指offer”,写这个板块,不仅仅是解决算法问题本身,更是手动提高难度、自行变式,思考更多的解决方案,以带给自己一些启发。 1. 【逆序打印单链表】原始题...

LinkedBear
55分钟前
3
0
Linux内存布局

今天这篇文章主要是我之前看Linux内核相关知识和博客Gustavo Duarte中。我主要是看了这篇博客,并且结合之前的知识,对内存管理的的理解又上升了一个档次。所以想通过这篇文章总结下。 我们先...

linuxprobe16
今天
1
0
day94-20180921-英语流利阅读-待学习

记录死亡还是消费死者?自杀报道的媒体偏见 雪梨 2018-09-21 1.今日导读 自杀事件报道一直是新闻报道的重要部分,具有骇人听闻、吸引眼球的特点。可是在报道这些事件的时候,除了客观陈述事实...

飞鱼说编程
今天
5
0
如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
5
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部