CMS(Concurrent Mark-Sweep)是以犧牲吞吐量爲代價來得到最短回收停頓時間。對於要求服務器響應速度的應用上,這種垃圾回收器很是適合。在啓動JVM參數加上-XX:+UseConcMarkSweepGC ,這個參數表示對於老年代的回收採用CMS。CMS採用的基礎算法是:標記—清除。算法
使用場景:服務器
一、應用程序對停頓比較敏感,而且在應用程序運行的時候能夠提供更大的內存和更多的CPUapp
二、在JVM中,有相對較多存活時間較長的對象(老年代比較大)會更適合使用CMS。ui
爲解決CMS算法產生空間碎片和其它一系列的問題缺陷,HotSpot提供了另一種垃圾回收策略,G1(Garbage First)算法,經過參數-XX:+UseG1GC
來啓用,該算法在JDK 7u4版本被正式推出,G1垃圾收集算法主要應用在多CPU大內存的服務中,在知足高吞吐量的同時,竟可能的知足垃圾回收時的暫停時間,下面是官方介紹:spa
The Garbage-First (G1) collector is a server-style garbage collector, targeted for multi-processor machines with large memories. It meets garbage collection (GC) pause time goals with a high probability, while achieving high throughput. The G1 garbage collector is fully supported in Oracle JDK 7 update 4 and later releases. The G1 collector is designed for applications that:code
G1採用了另一種徹底不一樣的方式組織堆內存,堆內存被劃分爲多個大小相等的內存塊(Region),每一個Region是邏輯連續的一段內存,G1中提供了三種模式垃圾回收模式,young gc、mixed gc 和 full gc,在不一樣的條件下被觸發。orm