zoukankan      html  css  js  c++  java
  • 关于Android universal-imageloader Out of memory的优化方案

      1、如果你经常出现oom,你可以尝试:

    1)禁用在内存中缓存cacheInMemory(false),如果oom仍然发生那么似乎你的应用程序有内存泄漏,使用MemoryAnalyzer来检测它。否则尝试以下步骤(尝试所有或几个)

    2)减少配置的线程池的大小(.threadPoolSize(...)),建议1~5

    3)在显示选项中使用 .bitmapConfig(Bitmap.Config.RGB_565) . RGB_565模式消耗的内存比ARGB_8888模式少两倍.

    4)配置中使用.diskCacheExtraOptions(480, 320, null)

    5)配置中使用 .memoryCache(newWeakMemoryCache()) 或者完全禁用在内存中缓存(don't call .cacheInMemory()).

    6)在显示选项中使用.imageScaleType(ImageScaleType.EXACTLY) 或 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)

    7)避免使用 RoundedBitmapDisplayer. 调用的时候它使用ARGB-8888模式创建了一个新的Bitmap对象来显示,对于内存缓存模式 (ImageLoaderConfiguration.memoryCache(...)) 你可以使用已经实现好的方法.

    2、ImageLoader是根据ImageView的height,width确定图片的宽高

    3、一定要对ImageLoaderConfiguration进行初始化,否则会报错

    4、开启缓存后默认会缓存到外置SD卡如下地址(/sdcard/Android/data/[package_name]/cache).

    配置后,可以解决oom的问题。如果还会出现这种问题,那么你就需要再次检测你的代码是否有一些存在问题。 

  • 相关阅读:
    DFS
    关于memset

    SpringCloud(六)Ribbon负载均衡
    每日算法练习(2020-1-27)
    SpringCloud(五)Eureka Server高可用集群与常见问题
    SpringCloud(四)Eureka服务注册与发现
    SpringCloud(三)常用系统架构技术讲解
    Redis(八)
    Redis(七)
  • 原文地址:https://www.cnblogs.com/wsfjlagr/p/4629418.html
Copyright © 2011-2022 走看看