菜鸟也能解决android中的OOM问题

标签: 菜鸟 android oom | 发表时间:2013-02-13 10:43 | 作者:androidzhaoxiaogang
出处:http://blog.csdn.net

只要你记住下面几个原则,在android 中处理图片的OOM问题绝对是easy之极:

1.超大图片要按比例压缩之后才做显示,退出当前activity 必须回收

    public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,  
            int reqWidth, int reqHeight) {  
      
        // First decode with inJustDecodeBounds=true to check dimensions  
        final BitmapFactory.Options options = new BitmapFactory.Options();  
        options.inJustDecodeBounds = true;  
        BitmapFactory.decodeResource(res, resId, options);  
      
        // Calculate inSampleSize  
        options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);  
      
        // Decode bitmap with inSampleSize set  
        options.inJustDecodeBounds = false;  
        return BitmapFactory.decodeResource(res, resId, options);  
    }  

关于inSampleSize 可根据自己的实际情况去定。

if (bitmap != null && !bitmap.isRecycled()) {
                    bitmap.recycle();
                    bitmap = null;
}
2.大图片(30~50k)的可直接显示,退出当前activity 立即回收

if (bitmap != null && !bitmap.isRecycled()) {
                    bitmap.recycle();
                    bitmap = null;
}

3.大量的小图 或者不同size的图片要展示,请参看我的另外一篇LRU算法缓存图片的:http://blog.csdn.net/androidzhaoxiaogang/article/details/8211649

作者:androidzhaoxiaogang 发表于2013-2-13 10:43:20 原文链接
阅读:92 评论:0 查看评论

相关 [菜鸟 android oom] 推荐:

菜鸟也能解决android中的OOM问题

- - CSDN博客移动开发推荐文章
只要你记住下面几个原则,在android 中处理图片的OOM问题绝对是easy之极:. 1.超大图片要按比例压缩之后才做显示,退出当前activity 必须回收. 关于inSampleSize 可根据自己的实际情况去定. 2.大图片(30~50k)的可直接显示,退出当前activity 立即回收. 3.大量的小图 或者不同size的图片要展示,请参看我的另外一篇LRU算法缓存图片的:http://blog.csdn.net/androidzhaoxiaogang/article/details/8211649.

Android OOM案例分析

- - 美团点评技术团队
在Android(Java)开发中,基本都会遇到 java.lang.OutOfMemoryError(本文简称OOM),这种错误解决起来相对于一般的Exception或者Error都要难一些,主要是由于错误产生的root cause不是很显而易见. 由于没有办法能够直接拿到用户的内存dump文件,如果错误发生在线上的版本,分析起来就会更加困难.

Android 内存溢出解决方案(OOM)

- - CSDN博客移动开发推荐文章
众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视平台而定). 因此在开发应用时需要特别关注自身的内存使用量,而一般最耗内存量的资源,一般是图片、音频文件、视频文件等多媒体资源;由于Android系统对音频、视频等资源做了边解析便播放的处理,使用时并不会把整个文件加载到内存中,一般不会出现内存溢出(以下简称OOM)的错误,因此它们的内存消耗问题暂不在本文的讨论范围.

android图片的打开和缩放时出现oom处理过程

- - CSDN博客移动开发推荐文章
以前对于图片缩放时出现oom,也是束手无策. 昨天看了 Android_Tutor对于图片处理的文章,今天就斗胆将这部分的内容演习下. 首先创建一个布局文件:用imageview控件加载图片. 其次:用公共类ImageCacheUtil对图片进行压缩处理:这样可以保证图片太大的时候不会出现oom.

Android之批量加载图片OOM问题解决方案 - 杰瑞教育

- - 博客园_首页
一、OOM问题出现的场景和原因.   一个好的app总少不了精美的图片,所以Android开发中图片的加载总是避免不了的,而在加载图片过程中,如果处理不当则会出现OOM的问题.   首先我们来总结一下,在加载图片过程中 出现的OOM的场景无非就这么几种:. 2、  一次加载的图片过多.   那么为什么在以上场景下会出现OOM问题呢.

高并发下的oom killer

- - 操作系统 - ITeye博客
最近在搞分布式批处理平台的项目,在进行压力测试的过程中出现oom killer,而且是在linux'系统日志抛出的;. 环境:VMware虚拟机(8c/16g/100g),并发线程数:16个,称此系统为A,在A系统处理的过程中需要调用B系统的服务,是通过http协议进行的调用;. 下面描述一下排查错误的过程及相关的知识,其中一些文章是转载的一下比较好的文章;.

Linux的OOM killer简单测试

- - Linux - 操作系统 - ITeye博客
       顾名思义,OOM(out of memory) killer,是Linux操作系统发现内存不足时,它会强制杀死一些用户进程(非内核进程),来保证系统有足够的物理内存进行分配.     Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序. 因为申请内存后,并不会马上使用内存.

Node.js 内存溢出OOM分析

- -
Node.js 内存飙涨以及 OOM 的问题,只要业务流量稍微复杂,一般都会遇到. 如果是堆内内存,在 OOM 之前可以打一个 Heap Profiling 进行分析,如果是 OOM 之后,可以利用 llnode 对 corefile 进行分析,但如果是堆外内存飙涨呢. 这一块内存通过 Chrome Devtool 工具是分析不出来的.

Android菜鸟笔记- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开

- - CSDN博客移动开发推荐文章
周末闲来无事,把Android的基础知识拿出来复习复习,今天主题是《获取未安装的APK图标、版本、包名、名称、是否安装、跳转安装、打开》. 通常读取APK的图标可以用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable.

Eclipse的Mat Plugin查找OOM使用一例

- - CSDN博客推荐文章
最近接手了一个老项目比较头痛. 头痛的原因是这个代码的编写者已经离开了公司,而且代码基本没有注释,结构混乱并且还有严重的内存泄漏问题. 其实接手这个项目最大需要解决的问题就是内存泄漏问题. 由于这个老项目使用JDK1.5,所以像JDK1.6自带很多内存检测工具都派不上用场了. 比如:jdk1.5 使用的jmap -heap 生成的dump文件用eclipse的mat就打不开.