本来 使用listview的时候 加载大图片的时候 会遇到内存溢出而导致崩溃。

但是使用LruCache的时候 原本以为可以 解决这个问题。  但是发现还是出现了内存溢出的情况。   困扰很久

另外,在图片下载完毕 保存在本地后,却发现读取大量图片的时候 ,利用lrucache 却不会内存泄漏而导致崩溃。

最后经过查看日志 发现,  在网络加载的时候 很吃内存,随着不断产生线程去下载图片, 能够看到 虚拟机释放内存的时候基本起不到作用 每次最多释放十几K,内存基本上快占满了。。。

而加载本地图片的时候 ,内存释放的确相当及时,每次大约4M多, 这样当然就不会内存泄漏了。。。   那问题发生在什么地方呢?

考虑可能产生的因素: 1  开启线程太多。

但是 加载本地图片的时候也是开启新的线程了啊 。。。但是它却没有崩溃啊。。

2  下载过成功产生太多临时Bitmap ,没能够释放的原因?

但是网络加载 成功后 我也把下载的bitmap 放到了LruCache中了啊 ,按理说他应该会在超出给定大笑的时候帮我释放内存的啊。。。为什么呢? 难道是在这之前有阻塞的地方,而这个地方在不断地堆积byte到内存中?于是我找到下载图片的地方

conn.connect();
bitmap = BitmapFactory.decodeStream(is,null,bmpFactoryOptions);

问题应该出现在这里, 当 开启太多线程下载图片的时候, 在下载过程缓冲了太多byte[],并且在各自的线程中等待着数据的到来。这样虚拟机是不会释放这些数据的,多个线程阻塞,造成内存溢出。而导致了这个问题。

避免这个问题 ,有两个解决思路,  1少开几个线程  2 图片不要太大。

这么认为不知道对不对 。。。。我是这么想的

最新文章

  1. Atitit.数据检索与网络爬虫与数据采集的原理概论
  2. what we do and how we behave
  3. web页面直接跳转至其他页面
  4. FLASH AS 不显示中文
  5. URAL 1218 Episode N-th: The Jedi Tournament(强连通分量)(缩点)
  6. (C#) Action, Func, Predicate 等泛型委托
  7. css3:target页内跳转
  8. 经验36--C#无名(大事,物...)
  9. 关于code reivew
  10. 小白学C++的小问题
  11. 初涉扫码登录:edusoho实现客户端扫码登录(简版)
  12. SPFA+SLF+LLL优化模板
  13. ubuntu16.04开机循环输入密码无法进入桌面的解决办法
  14. 关于H5的一些杂思细想(一)
  15. Basic remains POJ - 2305 同余模 高精度处理
  16. Go数据类型和变量
  17. 基于weixin-java-mp 做微信JS签名 invalid signature签名错误 官方说明
  18. Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》
  19. poj2481
  20. ASP.NET动态引用样式表(css)和脚本(js)文件

热门文章

  1. 单元测试JUnit4 Ctrl + Shift + T
  2. XML 解析中 SelectSingleNode 与 SelectNodes 使用通配符介绍
  3. 网页中控制ActiveX插件高度
  4. 【eclipse插件开发实战】Eclipse插件开发2——SWT
  5. TypeScript完全解读(26课时)_19.其他重要更新
  6. war,jar包是啥
  7. 洛谷 - UVA11346 - 概率 Probability - 积分
  8. IOS实时监控上传下载速度
  9. Untiy一些方法前特殊标签记录
  10. [HNOI2010] 公交线路 bus