根可达分析算法-将”GC Roots”对象作为起点,从这些节点开始向下搜索引用的对象,找到的对象都标记为非垃圾对象,其余未标记的对象都是垃圾对象。线程栈的本地变量、静态变量、本地方法栈的变量等等都可以称作GC Roots跟节点。如图:
3.常见的垃圾回收算法
复制算法-没有碎片 浪费内存空间(目前使用新生代使用的是复制算法)
标记清除-位置不连续 产生内存碎片
标记压缩-没有碎片 效率偏低
复制算法它将可用内存按容量分为大小相等的两块,每次只使用其中的一块,当这一块的内存用完了,就将还存活的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。
五.常见垃圾回收器新生代收集器:Serial、ParNew、Parallel Scavenge
老年代收集器:CMS、Serial Old、Parallel Old
整堆收集器: G1
jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)