提笔忘字 2017-08-09 02:36 采纳率: 50%
浏览 960
已采纳

android 图片内存溢出

 

在界面显示多个图片的时候(10多张图片,每张500Kb左右),就会出现内存溢出的日志,但是应用不会崩溃,只会导致图片不显示,只显示占位图或者加重错误的图片。
这种情况只在一种设备上出现(厂家定制的设备),在其他手机上不会出现,在模拟器上(运存调到800MB)也不会出现。有没有懂得老司机帮忙分析一下。

 
 
图片说明
上图是出现的异常日志
 
图片说明
上图是运行时内存使用情况
 
图片说明
上图是查看build.prop文件的内存
 

  • 写回答

5条回答 默认 最新

  • smile_邝野 2017-08-09 06:11
    关注

    重新配置下glide配置如下
    public class GlideModelConfig implements GlideModule{
    int diskSize = 1024 * 1024 * 100 ;
    int memorySize = (int) (Runtime.getRuntime().maxMemory()) / 8;
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
    //默认内存和图片池大小
    MemorySizeCalculator calculator = new MemorySizeCalculator(context);
    int defaultMemoryCacheSize = calculator.getMemoryCacheSize();//默认内存大小
    int defaultBitmapPoolSize = calculator.getBitmapPoolSize();//默认图片池大小
    builder.setMemoryCache(new LruResourceCache(defaultMemoryCacheSize));
    builder.setBitmapPool(new LruBitmapPool(defaultBitmapPoolSize));

        //自定义图片的本地磁盘缓存
        File cacheDir =context.getExternalCacheDir();//置顶数据的缓存地址
        int diskCacheSize = 1024 * 1024 * 30 ;//最多缓存字节数据
        //设置磁盘缓存大小
        builder.setDiskCache(new DiskLruCacheFactory(cacheDir.getPath(),"glide",diskCacheSize));
        //定义缓存大小和位置
        builder.setDiskCache(new InternalCacheDiskCacheFactory(context,diskSize));//内存中
        builder.setDiskCache(new ExternalCacheDiskCacheFactory(context,"cache",diskSize));//SD卡中
        //定义图片格式
        builder.setDecodeFormat(DecodeFormat.PREFER_RGB_565);
        //自定义内存和图片池大小
        builder.setMemoryCache(new LruResourceCache(memorySize));
        builder.setBitmapPool(new LruBitmapPool(memorySize));
    }
    
    @Override
    public void registerComponents(Context context, Glide glide) {
    
    }
    

    }
    之后在清单文件中
    <!-- 配置glide相关缓存策略 -->
    android:name="包名.GlideModelConfig"
    android:value="GlideModule" />

                        这么试试
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题