【笔记】深入理解 java 虚拟机---垃圾收集器
2018-01-02 本文已影响0人
张航_8ee7
1 收集器作用的区间不同。有老年代的还有新生代的。
2 收集器解决的问题不同
3 没有最好的收集器。只有最适合的。
1 Serial 收集器 。 单线程,新生代,适用桌面应用。
2 ParNew收集器 。 Serial的多线程版,新生代。
3 Parallel Scavanenge.(平行 ,清除)收集器。 以cpu吞吐量为目的。可以认为控制cpu的吞吐量。
4 Serial Old。 单线程,老年代。
5 Parallel Old。 同2,老年代。
重点是下面的两种。
1 CMS(Concurrent Mark Sweep) .。 目的是为了GC停顿时间最短为目的。 工作流程: 初始标记==》并发标记==》重新标记==》并发清除。3个标记一个清除。初始标记和重新标记仍然需要GC停顿。但是耗时很短,并发标记 和 并发清除可以和 用户线程同时执行。所以,可以称的上一个无GC停顿的收集器。
缺点 :1【1】 比较占cpu资源 】【2】 产生浮动垃圾,不能及时清除(因为收集过程中,用户的线程仍然再继续,所以可能会产生一些在这次收集结果没有收集到的垃圾)。 【3】标记清除的特点,产生不连续的内存空间。
2 G1 收集器(Grabage First)。 目前最新的技术产品之一。 运行流程:初始标记==》并发标记==》最终标记==》筛选返回。3个标价一个清除。不过是基于标记整理算法的,从局部看是 基于 复制算法的。
优点: 【1】 并发和并行 。和用户线程并行。【2 】分代收集。 可以一个收集器管理整个堆。它将堆划分为一个个 region。 【3】空间整合 。相对与cms的标记清除算法。【4可预测的停顿】我们可以人为的控制GC停顿时间。依据它将内存分成一个个Region。
垃圾收集器的参数总结。