关闭

iOS开发:UITableView加载多张照片导致内存上涨的问题

标签: UITableVie内存上涨UIImage
356人阅读 评论(0) 收藏 举报
分类:

本文出处刚刚在线:http://www.superqq.com/blog/2014/11/06/ioskai-fa-:uitableviewjia-zai-duo-zhang-zhao-pian-dao-zhi-nei-cun-shang-zhang-de-wen-ti/

最近在写一个文件管理的页面,里面功能挺多的,有缩略图下载(socket),有文件下载(http)。

说说缩略图下载这一块,我的UITableView的一个cell要加载四张缩略图,iPhone5s的屏幕能加载8行。大概UI上是这样布局的。(另外缩略图需要一张张下载)

刚开始进到文件管理界面,内存占用20几M,随着缩略图不断下载下来内存在上涨,我不断的往上拉,内存一值在涨。达到一定值app出现闪退。大概是300多M的时候闪退。什么原因造成的呢?
先看下图:
这里写图片描述
我是这样写的:建立一个对象,这个对象有一个属性是UIImage。对象保存在数组里面。大概有800多张照片。

当缩略图没有下载下来的时候,我加载的是一张默认图片。当缩略图下载下来的时候,我就把下载下来的缩略图赋给相应对象的UIImage属性。

cell是重用的,这样看应该是没有什么问题的。但是内存就是不断上涨,而且是不动的时候,内存不涨,上下滑动UITableView,内存不断上涨。

我一直在思考cell是重用的,内存怎么会不断上涨呢?问题不是cell引起的,而是上面我说的那个对象的UIImage属性引起的。

思考一下,缩略图不断下载下来, 下载下来的缩略图都赋给对象的UIImage属性,而对象又在数组里面,可想而知,800多张缩略图不断下载内存肯定上涨。

于是,我去掉对象的UIImage属性,把下载下来的照片通过EGOCache缓存起来,加载cell上的UIImage的时候,直接从缓存里面取出来就可以了。

代码如下:

[[EGOCache globalCache] setImage:image forKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[[fmObject.path description] hash]] withTimeoutInterval:CacheingTime];

再次运行起来,看一下内存这一块:
这里写图片描述

0
0
查看评论

[IOS]来回加载大量图片内存溢出的问题

用xcode的instrument工具查看内存使用情况时,发现程序使用内存情况很稳定维持在1.3M左右,也没有内存泄漏。那么问题来了,程序无故退出肯定是内存溢出了,而instrument并显示没有溢出(一般单个程序内存消耗唯20M左右会发警告,30M程序崩溃退出)。所以一直在想是不是哪个地方忘记释放...
  • s10141303
  • s10141303
  • 2014-05-12 02:41
  • 4210

iOS开发:UITableView加载多张照片导致内存上涨的问题

说说缩略图下载这一块,我的UITableView的一个cell要加载四张缩略图,iPhone5s的屏幕能加载8行。大概UI上是这样布局的。
  • conslee
  • conslee
  • 2014-11-06 10:11
  • 2045

iOS tableview SDWebImage加载多张图片内存警告(received memory warning)

最近项目中遇到一个问题 在tableview上展示多张图片,在加载的过程中,图片过多时,加载几张图片就崩溃了。内存溢出 为什么会出现这种情况 这个原因其实很明显,SDWebImage产生的图片缓存过多,造成APP内存溢出,崩溃了。 查了一些资料 有三种解决方法 1. 更改图片的大小,在ta...
  • qq_25303213
  • qq_25303213
  • 2017-07-04 17:04
  • 1016

ios uitableview加载图片优化

举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户体验就不太好,而且浪费内存.           ...
  • jks456
  • jks456
  • 2015-04-20 10:33
  • 1020

iOS开发中加载图片的内存问题以及优化方案

图片的加载方式iOS目前有2种: 1.Resource 它是指inageWithContentsFile:创建图片的图片管理方式; 2.ImageAssets 它是指使用imageNamed:创建图片的图片的管理方式; UIImage内存处理: 真是的App开发中,常用的无非是1和2两种方式...
  • MengHuaYin
  • MengHuaYin
  • 2016-07-08 23:04
  • 1147

iOS开发 - 完美解决SDWebImage加载多个图片内存崩溃的问题

SDWebImage大家肯定都恨熟悉了,国内外太多的App使用其进行图片加载。 但是最近在使用过程中发现,我用SDWebImage加载多个图片,类似微博动态那种,在加载的过程中。我发现当图片分辨率比较大的时候(不是图片大),加载几张图片就崩溃了。 网上说可以每次加载图片清空memcach...
  • a910577347
  • a910577347
  • 2017-09-25 11:40
  • 678

Linux读取文件,导致内存高,触发oom-killer问题解决

最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂 1. 首先确认该系统的版本是32位 #uname -a Linux alarm 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i6...
  • itjobtxq
  • itjobtxq
  • 2014-08-25 17:14
  • 913

ios7加载uitableview界面突然内存猛增到1G多

NSMutableArray *coutryArray; - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {     return c...
  • qq562475163
  • qq562475163
  • 2013-11-06 09:23
  • 1049

iOS开发 使用AFNetworking实现多张图片上传

iOS开发 使用AFNetworking实现多张图片上传
  • u010328250
  • u010328250
  • 2015-05-07 15:58
  • 2743

android加载大量图片内存溢出的三种解决办法

方法一: 在从网络或本地加载图片的时候,只加载缩略图。 /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return */ public static Bitmap loadRe...
  • u014611173
  • u014611173
  • 2016-04-19 15:47
  • 245
    个人资料
    • 访问:113772次
    • 积分:3291
    • 等级:
    • 排名:第12207名
    • 原创:212篇
    • 转载:77篇
    • 译文:0篇
    • 评论:27条