android 图片内存溢出

 

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

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

重新配置下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" />

                    这么试试

有没有尝试过对图片进行压缩处理,或者进行图片加载缓存

使用Glide直接加载到ImageView吗,去看下Glide的api,应该可以配置压缩得更小一些的

我是用fresco倒是没出现过内存泄漏,你可以试试

建议你用Picasso或者Glide试试