android 垃圾回收

1.当系统内存不足时,系统将激活内存回收过程。为了不因内存回收影响用户体验(如杀死当前的活动进程),

Android 基于进程中运行的组件及其状态规定了默认的五个回收优先级:

IMPORTANCE_FOREGROUND:

IMPORTANCE_VISIBLE:

IMPORTANCE_SERVICE:

IMPORTANCE_BACKGROUND:

IMPORTANCE_EMPTY:

  这几种优先级的回收顺序是 Empty process、Background process、Service process、Visible process、Foreground process。

2.防止内存溢出:

  1)明确的调用System.gc()

  2)bitmap用完用bitmap.recycle()

  3)图片处理时指定大小

3. 第一:不要为Context长期保存引用(要引用Context就要使得引用对象和它本身的生命周期保持一致)。


  第二:如果要使用到Context,尽量使用ApplicationContext去代替Context,因为ApplicationContext的生命周期较长,引用情况下不会造成内存泄露问题


  第三:在你不控制对象的生命周期的情况下避免在你的Activity中使用static变量。尽量使用WeakReference去代替一个static。


  第四:垃圾回收器并不保证能准确回收内存,这样在使用自己需要的内容时,主要生命周期和及时释放掉不需要的对象。尽量在Activity的生命周期结束时,在onDestroy中把我们做引用的其他对象做释放,比如:cursor.close()。

时间: 2024-08-08 00:40:54

android 垃圾回收的相关文章

Android垃圾回收机制

1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象.该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用. 垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配.垃圾收集算法的选择和垃圾收集系统参数的合理调节直接影响着系统性能,

Android垃圾回收机制--二

1. 哪些情况下的对象会被垃圾回收机制处理掉 答案: 1)发现无用信息对象 2)回收被无用对象占用的空间的内存空间,使该空间可被程序再次使用 2.垃圾回收机制的意义 Java语言中的一个显著的特点就是引入了垃圾回收机制,使C++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不在需要考虑内存管理.由于有个垃圾回收机制,Java中的对象不在有“作用域”的概念,只有对象的引用才有“作用域”.垃圾回收可以有效防止内存泄漏,有效的使用空闲的空间 PS:内存泄漏是指该内存空间使用

android 垃圾回收机制

1.垃圾收集算法的核心思想 java语言提供了自动的GC机制,系统会经常检查内存,采用对象引用计数的方式,将引用次数为0的对象回收.这样可以防止两个危险:(1)防止无用对象占用内存资源 (2)防止有用对象被释放,引起内存非法引用. 2.触发GC(Garbage Collector)的条件 (1)应用进程空闲的时候,GC会回收空闲进程的内存资源. (2)应用进程繁忙的时候,当需要的内存资源不足的时候, GC会强制执行回收优先级比较低的进程资源,如果还是不足,则再回收两次,还是不足则会报OOM. 3

Android进程管理及静态变量垃圾回收

1.Android静态变量的生命周期 静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法 区.当类被卸载的时候,静态变量被销毁. 在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中 呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用, 则与内存回收.内存泄漏这些问题有关,有必要加

理解Android Java垃圾回收机制

Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆.堆是运行时数据区域,所有类实例和数组的内存均从此处分配.非堆是JVM留给自己用的,包含方法区.JVM内部处理或优化所需的内存(如 JIT Compiler,Just-in-time Compiler,即时编译后的代码缓存).每个类结构(如运行时常数池.字段和方法数据)以及方法和构造方法的代码. 简言之,Jav

Android性能调优篇之探索垃圾回收机制

详细内容请查看我的简书地址:Android性能调优篇之探索垃圾回收机制 或者我的个人博客地址:Android性能调优篇之探索垃圾回收机制

Android gc垃圾回收研究学习

尊重个人劳动成果,转载请注明出处:http://blog.csdn.net/hnulwt/article/details/44903331 文中很多内容说到了JVM,我想通过研究学习JVM来达到认识DVM的目的.为了严谨,查询了一下 JVM和DVM的不同点 1.Dalvik 和标准 Java 虚拟机(JVM)的首要差别 Dalvik 基于寄存器,而 JVM 基于栈.基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短. 2.Dalvik 和 Java 字节码的区别 Dalvik

Android_对android虚拟机的理解,包括内存管理机制垃圾回收机制。dalvik和art区别

虚拟机很小,空间很小,谈谈移动设备的虚拟机的大小限制 16M ,谈谈加载图片的时候怎么处理大图片的,outmemoryExceptionBitmapFactory.option 垃圾回收,没有引用的对象,在某个时刻会被系统gc掉 . Dalvik和标准Java虚拟机(JVM)首要差别Dalvik 基于寄存器,而 JVM 基于栈.基于寄存器的虚拟机对于编译后变大的程序来说,在它们执行的时候,花费的时间更短.Dalvik和Java运行环境的区别1:Dalvik主要是完成对象生命周期管理,堆栈管理,线

Google IO大会的主题演讲 Android系统在垃圾回收

3年前的Google IO大会的主题演讲 Google IO 2011 Memory management for Android Apps,该演讲介绍了Android系统在垃圾回收上的变化和如何发现并内存泄露以及如何管理Android中的内存. 原文:  (英文并不是很复杂稍微有点英语水平是可以看懂的,是在不行的话,我只能说,译文见底部) Hi everybody, My name's Patrick Dubroy and today I'm going to talk to you abou