Oracle提議將G1作為Java 9的預設垃圾收集器

來源:互聯網
上載者:User

Oracle提議將G1作為Java 9的預設垃圾收集器

Oracle正在考慮將 JEP 248 包含到 Java 9的JEP列表 中,即在伺服器配置中將G1作為預設垃圾收集器。該決定在Java社區引發了一些爭論,許多人都認為並發標記和掃描(CMS)收集器可能更合適。

如果該決定付諸實施,那麼G1將取代並行垃圾收集器成為伺服器配置的預設選項。正如Oracle在 記憶體管理白皮書 中描述的那樣,並行垃圾收集器的設計初衷是,通過不常發生(但可能時間比較長)的Stop-The-World(STW)中斷最大化應用程式輸送量。並行 垃圾收集器將消耗的總計算時間最小化,長遠來看,其破壞性更小,因此可以提供更好的整體效能。該收集器非常適合對回應時間要求不高的應用程式,比如,批處 理。

另一方面,正如前G1效能負責人Monica Beckwith先前在InfoQ上闡述的那樣,Garbage First(G1)的設計初衷是,以更高的計算成本為代價最小化STW停機時間。G1更適合於低延遲應用程式,如Web伺服器,這也體現了Stefan Johansson在JEP中所描述的動機:

通常來說,限制GC停機時間比最大化輸送量更重要。對大部分使用者而言,與面向輸送量的收集器相比(如並行垃圾收集器),切換到停機時間短的垃圾收集器(如G1),可以獲得更好的整體體驗。

這裡出現了爭議。HotSpot因為同樣的目的引入了CMS,而實際上,按照 Oracle的描述 ,CMS“設計用於更希望縮短垃圾收集停機時間的應用程式,以及在運行時可以與垃圾收集器共用處理器資源的應用程式”。許多公開的基準測試都表明,在記憶體佔用相對較小的應用程式中,CMS的效能往往要勝過G1,這與 Oracle對G1的描述 一致,即G1適用於堆大小為6GB及以上的伺服器應用程式。

在最近的一次交流中,效能專家Kirk Pepperdine特別指出,Google已經向CMS貢獻了若干改進,但它們從沒有出現在HotSpot中。他還補充說,雖然長遠看G1可能是更好的選擇,但Oracle的設計方案已經剝奪了社區從CMS獲得更好體驗的權力。

查看英文原文: Oracle Proposes G1 as the Default Garbage Collector for Java 9

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.