标签:
垃圾收集器
常用的四种垃圾收集器:Serial GC、Paralle收集器、Mostly-Concurrent收集器、Garbage-First收集器。
1.Serial GC
新生代采用复制收集算法,老年代中采用标记清楚压缩算法,它的minor GC和Full GC都是以Stop-The-World方式(即收集时应用程序停止运行)。只有等垃圾收集结束后,应用程序才会继续执行。该收集方式适应大多数对停顿时间要求不高和在客户端运行的应用。
2、Parallel 收集器(ThroughPut收集器)
新生代采用Stop-The-World方式收集,而老年代采用标记-压缩方式,然而minor GC和Full GC都是并行的,需要高吞吐量的应用,最极端情况下,Full GC引入的Stop-The-World停顿时间依然需要满足需求的应用,以及运行在多处理器系统上的应用。
3、Mostly-Concurrent 收集器:低延迟为先
它管理新生代的方式与Parallel收集器和Serial收集器相同,而它在老年代尽可能并发执行,每个垃圾收集周期只有2次短的停顿,与Paralle收集器相比,CMS老年代停顿变短(有时很可观),但代价是新生代停顿略微拉长,吞吐量有所降低,堆的大小有所增加,并且由于并发,垃圾收集还会占用应用的CPU周期,需要快速响应的应用从中受益,像这样的应用非常多。
4、Garbage-First 收集器:CMS替代者
G1是一个并行,并发和增量式压缩低停顿的垃圾收集器,长远来看是为了替代CMS,它的不同在于把Java堆分成相同尺寸的块。G1也是分代,但整体上没有划分新生代和老年代,相反,每代是一组区域,这使得它可以灵活地调整新生代。G1垃圾收集是将区域中的存活对象转移到另外一些区域,然后收集前者。
大部分时候只收集新生代区域(这些形成G1的新生代),它们相当于minor GC,G1也定期执行并发标记,以标识那些空的或几乎空的非新生代区域。这些是收集效率最高的区域。(即G1以最少的代价回收最空的区域),它们是定期被回收,优先回收垃圾对象最多的区域。
Serial收集器 | Paralle收集器 | CMS收集器 | G1收集器 | |
是否并行 | 否 | 是 | 是 | 是 |
是否并发 | 否 | 否 | 是 | 是 |
新生代收集器 | 串行 | 并行 | 并行 | 并行 |
老年代收集器 | 串行 | 并行 | 并行和并发 | 并行和并发 |
标签:
原文地址:http://www.cnblogs.com/TingJie/p/5633805.html