标记清除算法
1.打标 找到需要回收的对象,并且把他们标记处理
2.清除 清除掉需要回收的对象,释放出对应的空间
缺点:产生大量不连续的空间碎片,可能后续的对象存放引起二次垃圾回收
比较耗费时间
标记复制算法
将内存划分为两块相等的区域,每次只使用其中的一块,当其中一块内存使用完了,就将还存活的对象复制到另外一块内存上面,然后把已经使用过的内存空间一次清楚掉
标记整理算法
1.打标 找到需要回收的对象,并且把他们标记处理
2.整理 把还在存活都像一端移动,然后把边界以外的内存全部清理掉
分代收集算法
Young区:复制算法,对象在被分配之后,可能生命周期比较短,所以复制效率比较高
Old区:标记清除或者标记整理算法,old区存活时间比较长
垃圾收集器
Young区:Serial ParNew Parallel Scanvenge G1 复制算法
Old区: CMS SerialOld Parallel Old G1 标记清除/标记整理
垃圾收集器分类:
串行收集器:Serial SerialOld 只有一个垃圾回收线程执行,用户线程暂停
并行收集器:Parallel Scanvenge Parallel Old 这个是吞吐量优先,多条垃圾收集器并行工作,单此时用户线程仍处于等待状态
并发收集器:CMS G1 ZGC停顿时间优先 用户线程和垃圾收集器线程同时执行,但并不是一定是并行的,可能是交替执行的,垃圾收集器在执行的时候不会停顿用户线程的执行