Android 垃圾回收机制★

1.垃圾回收机制

垃圾回收,也叫GC(Garbage Collection),指的是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。

JVM的内存区域主要分为程序计数器、虚拟机栈、本地方法栈、方法区、堆。其中堆区才是GC作用的区域,其他几个数据区域都不进行GC。对象实例和数组都是在堆上分配的,GC也主要对这两类数据进行回收。

一般,程序使用内存的方式遵循先向操作系统申请一块内存、使用内存、使用完毕之后释放内存归还给操作系统。在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存。而Java等编程语言都提供了基于垃圾回收算法的内存管理机制,不再需要手动释放对象的内存,JVM中的垃圾回收器(Garbage Collector)会自动回收。

Android如今使用的虚拟机名叫Android Runtime,简称Art,而Art的其中一大职责就是负责垃圾回收。Art会在适当的时机触发GC操作,一旦进行GC操作,就会将一些不再使用的对象进行回收。

 

2.如何判定垃圾

目前主要有两种判定算法:引用计数算法和可达性分析算法。Art采用的是第二种算法。

①引用计数算法

引用计数算法通过在对象头中分配一个空间来保存该对象被引用的次数。如果该对象被其它对象引用,则它的引用计数加1,如果删除对该对象的引用,则它的引用计数减1,当该对象的引用计数为0时,该对象就会被回收。

注意,引用有四种类型分别是强引用、软引用、弱引用和虚引用。引用的类型会影响到垃圾的回收。

(1)强引用:通过new创建一个新对象时返回的引用就是一个强引用,若一个对象通过一系列强引用可到达&

你可能感兴趣的:(笔记,android)