前言:之前项目一直使用Universal-Image-Loader图片加载框架,毕竟算是github上最火的图片加载框架之一,而且用到该框架的比较大的应用也不少,所以挺放心的。
这两天,项目经理发现项目加载图片时内存会爆增,而且有时还报OOM,(一个坑爹手机,其实是不是这个框架报错还有待考察)之后就一直找原因,官方上面也有介绍,以下是原文:
If you often got OutOfMemoryError in your app using Universal Image Loader then try next (all of them or several):
Reduce thread pool size in configuration (.threadPoolSize(...)). 1 - 5 is recommended.
Use .bitmapConfig(Bitmap.Config.RGB_565) in display options. Bitmaps in RGB_565 consume 2 times less memory than in ARGB_8888.
Use .memoryCache(new WeakMemoryCache()) in configuration or disable caching in memory at all in display options (don't call .cacheInMemory()).
Use .imageScaleType(ImageScaleType.IN_SAMPLE_INT) in display options. Or try .imageScaleType(ImageScaleType.EXACTLY).
介绍了一些方法减少内存使用,比如修改配置信息、显示选项等。加上去以后,内存的使用好像有一点变化,不过也不大明显。另外还设置了支持largeHeap,OOM也不再报。
其实也测试过一些配置比较低的手机上,根本不会出现OOM,内存也不会占用高,并且查看很流畅。
怎么说呢,其实加载图片内存变大,这不都很正常吗?说句心里话吧,其实内存占用跟性能是同时存在,内存换性能,换来体验。
内存高点也正常,只要不报OOM就可以了,JVM 的 GC机制还没有到那么垃圾的地步!
(注:那坑爹手机配置不低)
分享到:
相关推荐
《Android-Universal-Image-Loader:解决Android应用中的图片内存溢出问题》 在Android开发中,图片加载是一项常见的任务,然而,不当的图片处理方式往往会导致内存溢出(Out of Memory,简称OOM)问题,严重影响...
《Android-Universal-Image-Loader:高效图片加载与缓存框架解析》 在移动应用开发中,图片加载和缓存是至关重要的环节,特别是在Android平台上,由于设备性能和网络环境的差异,良好的图片管理策略能显著提升用户...
Universal-Image-Loader (UIL) 是一个强大的图片加载库,广泛应用于Android开发中。这个"Universal-Image-Loader demo 加注释"项目提供了一个详细的示例,帮助开发者理解和使用这个库。下面,我们将深入探讨其核心...
`Universal Image Loader`(UIML)是一个强大的开源库,专为了解决这个问题而设计。它提供了一个灵活、可配置且高效的解决方案,使得开发者能够轻松地在Android应用中实现图片的异步加载和缓存。 1. **异步加载原理...
《Android Universal Image Loader:解决Bitmap内存溢出问题的利器》 在Android开发中,Bitmap对象是处理图像数据的重要工具,但同时也是导致内存溢出(Out Of Memory,OOM)问题的常见原因。Android-Universal-...
在Android应用程序中使用Android-Universal-Image-Loader可以提高应用程序的性能和用户体验,减少网络请求和内存占用。同时,该框架还提供了许多的配置选项和自定义选项,能够满足不同的应用场景和需求。 在使用...
《Universal-Image-Loader-master.zip》是一个包含Android应用源码的学习资源,主要关注图像加载库Universal Image Loader(UIL)的实现。Universal Image Loader是一个强大的图片异步加载、缓存库,广泛应用于...
"利用universal-image-loader下载图片"这个主题关注的就是如何使用Universal Image Loader(UIL)这一开源库来实现网络图片的下载与显示,同时避免常见的内存溢出(Out Of Memory,简称OOM)问题。 Universal Image...
"Android-Universal-Image-Loader"(AUIL)是一个强大的、灵活的开源组件,专门用于解决这个问题。这个组件允许开发者在Android应用中实现图片的异步加载,提高用户体验,同时降低对设备资源的消耗。 1. **异步加载...
"Universal Image Loader" 库通过在后台线程加载图片、预加载策略和内存及磁盘缓存机制,有效地解决了这些问题。它允许开发者定制各种策略,比如根据屏幕尺寸裁剪或缩放图片,减少内存占用,同时保持用户体验流畅。 ...
《Universal Image Loader库详解》 在移动开发领域,图片加载是一个至关重要的环节,尤其是在Android平台上。Universal Image Loader(UIM)是一个强大且高度可配置的库,专为Android设计,用于在应用程序中异步...
AllenImageLoader是一款基于Android-Universal-Image-Loader的优化版本,旨在解决Android平台上图片加载、缓存以及显示的问题。在Android开发中,图片加载是一个常见的需求,尤其是在处理大量图片或者网络图片时,...
Android-Universal-Image-Loader提供了LRU(Least Recently Used)策略来管理内存缓存,自动移除长时间未使用的图片,防止内存占用过高导致OOM。 二、磁盘缓存 磁盘缓存是第二层缓存,用于存储那些无法放入内存或被...
3. **防止OOM**:通过智能地缓存图片到内存和磁盘,Android-Universal-Image-Loader可以在内存不足时将部分图片移至磁盘,减少内存压力,从而有效防止内存溢出问题。 4. **自定义配置**:开发者可以根据实际需求对...
本文将深入探讨"第三方图片加载库源码",以Android-Universal-Image-Loader(UIL)为例,解析其核心概念、功能以及如何根据项目需求进行源码修改。 Android-Universal-Image-Loader(UIL)是一个强大的、高度可配置...
这里我们讨论的是一个经过改造的开源代码,它专门用于解决这个问题,并且依赖于`Android-Universal-Image-Loader`库。 `Android-Universal-Image-Loader`是一个强大的、高度可配置的图片加载、缓存和显示库。这个库...