java GC垃圾回收機制G一、CMS

CMS(Concurrent Mark-Sweep)是以犧牲吞吐量爲代價來得到最短回收停頓時間。對於要求服務器響應速度的應用上,這種垃圾回收器很是適合。在啓動JVM參數加上-XX:+UseConcMarkSweepGC ,這個參數表示對於老年代的回收採用CMS。CMS採用的基礎算法是:標記—清除。java

使用場景:算法

一、應用程序對停頓比較敏感,而且在應用程序運行的時候能夠提供更大的內存和更多的CPU服務器

二、在JVM中,有相對較多存活時間較長的對象(老年代比較大)會更適合使用CMS。併發

 

爲解決CMS算法產生空間碎片和其它一系列的問題缺陷,HotSpot提供了另一種垃圾回收策略,G1(Garbage First)算法,經過參數-XX:+UseG1GC來啓用,該算法在JDK 7u4版本被正式推出,G1垃圾收集算法主要應用在多CPU大內存的服務中,在知足高吞吐量的同時,竟可能的知足垃圾回收時的暫停時間,下面是官方介紹:app

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:ui

  • Can operate concurrently with applications threads like the CMS collector.
  • Compact free space without lengthy GC induced pause times.
  • Need more predictable GC pause durations.
  • Do not want to sacrifice a lot of throughput performance.
  • Do not require a much larger Java heap.

G1採用了另一種徹底不一樣的方式組織堆內存,堆內存被劃分爲多個大小相等的內存塊(Region),每一個Region是邏輯連續的一段內存,G1中提供了三種模式垃圾回收模式,young gc、mixed gc 和 full gc,在不一樣的條件下被觸發。spa

總之,G1特色:線程

  • 支持很大的堆,高吞吐量
  • 更可控的停頓時間
  • 支持多CPU和垃圾回收線程
  • 在主線程暫停的狀況下,使用並行收集
  • 在主線程運行的狀況下,使用併發收集

實時目標:可配置在N毫秒內最多隻佔用M毫秒的時間進行垃圾回收code

經過JVM參數 –XX:+UseG1GC 使用G1垃圾回收器orm

 

備註:

       一、g1在java9 即是默認的垃圾收集器,是cms 的替代者。

       二、cms在最新的jdk中,已經被移除

相關文章
相關標籤/搜索