回收ImageView占用的图像内存

使用方法: RecycleBitmap.recycleImageView(mSelectorView);   参数为imageview

/**
* 回收ImageView占用的图像内存;
* 使用了本方法之后,记得用一下
* System.gc(); 提醒系统及时回收

* @param view
* 在setImageResource()方法前面还没有bitmap,图片可以出来。
* 在其后面执行本方法的话,图片就不会显示出来。
* 在setImageBitmap()方法的前面还没有bitmap,图片可以出来。
* 在其后面执行本方法的话,图片就不会显示出来。
* 最好在onDestroy方法中执行本方法
*/

public static void recycleImageView(View view){
        if(view==null) return;
        if(view instanceof ImageView){
            Drawable drawable=((ImageView) view).getDrawable();
            if(drawable instanceof BitmapDrawable){
                Bitmap bmp = ((BitmapDrawable)drawable).getBitmap();
                if (bmp != null && !bmp.isRecycled()){
                    ((ImageView) view).setImageBitmap(null);
                    bmp.recycle();
                    log("have recycled ImageView Bitmap");
                    bmp=null;
                }
            }
        }
    }

使用方法:  RecycleBitmap.recycleBitmap(mNo_shop1Bitmap);  参数为bitmap

/**
* 可以释放到Bitmap在C层申请的内存,recycle方法会把一些相关的引用计数置0.
* 回收Bitmap占用的图像内存;
* 使用了本方法之后,记得用一下
* System.gc(); 提醒系统及时回收
* @param bitmap
* 在setImageBitmap()方法的前面和后面都会报异常,最好在onDestroy方法中执行
* RuntimeException:trying to use a recycled bitmap [email protected]
*/

 public static void recycleBitmap(Bitmap bitmap){
            if(bitmap!=null&&!bitmap.isRecycled()){
               bitmap.recycle() ;  //回收图片所占的内存
               log("have recycled Bitmap");
               bitmap=null;
         }
    }
时间: 2024-08-28 03:47:57

回收ImageView占用的图像内存的相关文章

垃圾回收GC:.Net自己主动内存管理 上(二)内存算法

垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己主动内存管理 上(三)终结器 前言 .Net下的GC全然攻克了开发人员跟踪内存使用以及控制释放内存的窘态.然而,你或午想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包括很具体的内在算法描写叙述.同一时候.还将讨论GC的内存清理流程及什么时清理,怎么样强制清理. 内

linux下,一个运行中的程序,究竟占用了多少内存

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存. 虚拟内存可以不用考虑,它并不占用实际物理内存. (2). top 命令也可以 其中  VIRT(或VSS)列  表示,程序占用了多少虚拟内存. 同 ps aux 中的 VSZ列 RES列 表示, 程序占用了多少物理内存.同 ps aux 中的RSS列 2.在linux下, 查看当前系统占用

垃圾回收算法手册:自动内存管理的艺术 BOOK

垃圾回收算法手册:自动内存管理的艺术 2016-03-18 华章计算机 内容简介 PROSPECTUS 本书是自动内存管理领域的里程碑作品,汇集了这个领域里经过50多年的研究沉积下来的最佳实践,包含当代最重要的垃圾回收策略与技术,著译双馨. 几乎所有的现代编程语言都采用了垃圾回收机制,因此深入了解此方面内容对于所有开发者而言都大有裨益.对于不同垃圾回收器的工作方式,以及当前垃圾回收器所面临的各种问题,这本权威手册都提供了专业的解答.掌握这方面的知识之后,在面对多种不同的垃圾回收器以及各种调节选项

macos mail CPU占用100% 且内存不断增加的问题

macos mail CPU占用100% 且内存不断增加的问题 我的问题最终的解决方法似乎是把mail程序的日志清除一下就好了. 通过<活动监视器>查看到mail打开的文件中,有日志的目录: 进去查看发现有一个日志文件居然达到1.77GB,还有几个是几百MB的,删除所有日志文件. 之后重启mail后,发现mail运行就正常了.

静态成员变量不占用类的内存空间

假定程序运行环境为:操作系统Windows 2000,VC6.0编译环境,X86(80586)CPU处理器(32位小字节序处理器,4字节对齐) class CExample { public:     CExample();     virtual ~CExample(); private:     static int m_iValue1;     int m_iValue2; } 类CExample的一个对象CExampleobj,那么sizeof(CExampleobj) = (). A.

垃圾回收GC:.Net自己主动内存管理 上(一)内存分配

垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己主动内存管理 上(三)终结器 前言 .Net下的GC全然攻克了开发人员跟踪内存使用以及控制释放内存的窘态.然而,你也许想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包括很具体的内在算法描写叙述. 同一时候,还将讨论GC的内存清理流程及什么时清理.怎么样强制清理.

垃圾回收GC:.Net自己主动内存管理 上(三)终结器

垃圾回收GC:.Net自己主动内存管理 上(三)终结器 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己主动内存管理 上(三)终结器 前言 .Net下的GC全然攻克了开发人员跟踪内存使用以及控制释放内存的窘态.然而,你或午想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包括很具体的内在算法描写叙述.同一时候,还将讨论GC的内存清理流程及什么时清理,怎么样强制清理. 终结

在linux下,查看一个运行中的程序, 占用了多少内存

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存. 虚拟内存可以不用考虑,它并不占用实际物理内存. (2). top 命令也可以 其中  VIRT(或VSS)列  表示,程序占用了多少虚拟内存. 同 ps aux 中的 VSZ列 RES列 表示, 程序占用了多少物理内存.同 ps aux 中的RSS列 2.在linux下, 查看当前系统占用

linu下java程序占用CPU和内存过高排错处理方案

1:通过jps命令查看所有进程pid. 2:使用top -p pid 针对你所要查的pid查看这个进程的CPU和内存以及负载情况 如图: 使用top -p pid  -H  查看针对每一个线程占用CPU情况进行查询 如果你发现某一个PID占用的CPU过高,就拿到这个PID转换成16进制 例如pid为12760转化成16进制31D8,大写换成小写 jstack 22821|grep -A 10 0x31d8 针对你的每个线程拿出占用CPU的堆栈信息,你可以根据这个去查找CPU的占用 如果你的内存占