《深入理解jvm》笔记---第三章

来源:互联网 发布:淘宝3d样板间 编辑:程序博客网 时间:2024/05/22 03:16

第三章 垃圾收集器与内存分配策略

1. 对象已死吗?

在堆里面存放着Java世界里几乎所有对象的实例,垃圾收集器在对堆进行回收之前,第一件事情就是要确认这些对象中哪些还存活着,哪些已经死去。

在主流的商用程序设计语言的主流实现中,都是通过可达性分析来判断对象是否存活的。这个算法的基本思路是:通过一系列的称为GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何的引用链相连,则证明此对象是不可用的

可达性分析算法判定对象是否可回收


 

Java中,可作为GC Roots的对象主要包括以下几种:

(1)虚拟机栈(栈帧中的本地变量表)中引用的对象;

(2)方法区中类静态属性引用的对象;

(3)方法区中常量引用的对象;

(4)本地方法栈中JNI(即一般说的本地方法)引用的对象。

2. 生存还是死亡?

 

 

3. 垃圾收集算法:

(1)标记-清除算法。

(2)复制算法。

(3)标记-整理算法。

(4)分代收集算法。

1 0