JVM 垃圾回收原理简述
自动垃圾回收是JVM的重要特性之一,垃圾回收主要包括四个方面:
如何识别对象是可以回收的
Java中主要是通过可达性算法来判断对象是否可以回收,这个算法的基本思路是通过一系列的“GC Root”对象为起点开始往下搜索,所搜索过的路径成为引用链,当一个对象到GC Root没有任何引用链相连时,则证明此对象是可以回收的。
通常作为GC Root的对象有:
栈中应用的对象
方法区中类静态属性应用的对象
如何回收
标记
压缩
复制
回收的空间如何管理
Java采用分代垃圾回收,将对分为年轻代和老年代,年轻代分为Eden、From、To三个区域,年轻代垃圾回收时,将回收后剩下的对象复制到To区,Eden和From标记为空。
用什么样的过程进行回收
串行垃圾回收器(分年轻代和老年代)
并行垃圾回收器(分年轻代和老年代)
CMS(老年代)
G1