自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探秘Java 7新增垃圾回收器G1特性

原創(chuàng)
開發(fā) 后端
G1是一個服務(wù)端垃圾回收器,在前日發(fā)布的Java SE 6 u14中包含了一個體驗版本,并計劃在JDK 7中正式露面。本文中你將看到Java 7 G1的一些特性和描述,使用方法以及開發(fā)的最新進(jìn)展。

【51CTO精選譯文】G1垃圾回收器(簡稱G1 GC)是JDK 7中Java HotSpot VM新引入的垃圾回收器,Java SE 6 Update 14中已經(jīng)包含了一個G1的體驗版本(據(jù)51CTO之前的報導(dǎo),在Java SE 6 u14于6月初登場時,原本Sun的聲明是:G1垃圾回收器需要收費(fèi)方能使用。然而之后不久,Sun表示這是一個誤會,修改了原本的發(fā)布聲明,并表示現(xiàn)在以及將來對G1的使用都是完全免費(fèi)的),G1是設(shè)計用于替代HotSpot低延遲的并行標(biāo)記/清除垃圾回收器(也叫做CMS)的。

Java 7 G1屬性

G1是一個服務(wù)端垃圾回收器,有以下屬性:

◆并行和并發(fā)性:G1利用了當(dāng)今硬件中存在的并行性,當(dāng)Java應(yīng)用程序的線程被停止時,它使用所有可用的CPU(核心,硬件線程等)加速其停止,在停止過程中運(yùn)行Java線程最小化整個堆棧。

◆代:和其他HotSpot GC一樣,G1是一代,意味著它在處理新分配的對象(年輕代)和已經(jīng)生存了一段時間的對象(年老代)時會不同,它主要集中于新對象上的垃圾回收活動,因為它們是最可能回收的,舊對象只是偶爾訪問一下,對于大多數(shù)Java應(yīng)用程序,代的垃圾回收對于替代方案具有重要優(yōu)勢。

◆壓縮:和CMS不同,G1會隨時間推移對堆棧進(jìn)行壓縮,壓縮消除了潛在的碎片問題,確保長時間運(yùn)行的操作流暢和一致。

◆可預(yù)測性:G1比CMS預(yù)測性更佳,這都是由于消除了碎片問題帶來的好處,再也沒有CMS中停止期間出現(xiàn)的負(fù)面影響,另外,G1有一個暫停預(yù)測模型,允許它滿足(或很少超過)暫停時間目標(biāo)。

Java 7 G1描述

和其它HotSpot GC相比,G1采用了一個非常不同的堆棧布局方法,在G1中,年輕代和年老代之間沒有物理隔離,相反,它們之間有一個連續(xù)的堆棧,被分成大小一樣的區(qū)域(region),年輕代可能是一套非連續(xù)的區(qū)域,年老代也一樣,這就允許G1在年輕代和年老代之間靈活地移動資源。

G1中的回收是通過消除暫停發(fā)生的,在此期間,幸存者指的是回收集被轉(zhuǎn)移到另一個區(qū)域,以便回收區(qū)域可以再生,消除暫停是并行的,所有可用的CPU都會參加,大多數(shù)消除暫停收集可用的年輕區(qū)域,和其它HotSpot GC中的年輕回收是一樣的,在暫停期間偶爾也會選擇年老區(qū)域回收,因為G1在年輕一代回收上還肩負(fù)了年老代的回收活動。

和CMS相同的是,G1會定期執(zhí)行一個并發(fā)標(biāo)記暫停,這個階段的主要職責(zé)是識別哪一個年老區(qū)域的垃圾對象是最完整的,因為這些是最有效和最值得回收的,和CMS不同的是,G1不會執(zhí)行并發(fā)清除暫停,相反,最有用的年老區(qū)域是通過并發(fā)標(biāo)記暫停標(biāo)識的,在隨后的消除暫停期間進(jìn)行回收。

使用G1

G1仍然被看做是試驗品,可以使用下面兩個參數(shù)開啟它:

  1. -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC 

為了設(shè)置一個GC暫停時間目標(biāo),使用下面的參數(shù):

  1. -XX:MaxGCPauseMillis =50  (暫停時間目標(biāo)50ms) 

使用G1時還可以指定時間間隔,當(dāng)GC暫停持續(xù)時間沒有上面給出的時間長時可以這么用:

  1. -XX:GCPauseIntervalMillis =200  (暫停間隔目標(biāo)200ms) 

注意上面兩個選項表示的目標(biāo),沒有承諾和保證,在某些情況下它們可能能夠工作,GC不是總是能夠執(zhí)行它們。

另外,年輕代的大小可以明確指定影響消除暫停時間:

  1. -XX:+G1YoungGenSize=512m (年輕代大小512M) 

G1也使用幸存空間(可能是非連續(xù)的區(qū)域),它們的大小可以使用一個常見的參數(shù)指定,如:

  1. -XX:SurvivorRatio=6 

***,為了運(yùn)行G1充分發(fā)揮其潛力,嘗試設(shè)置以下兩個默認(rèn)被禁用了的參數(shù),因為它們可能會暴露一個罕見的競爭狀態(tài):

  1. -XX:+G1ParallelRSetUpdatingEnabled  
  2.  
  3. -XX:+G1ParallelRSetScanningEnabled  

注意當(dāng)設(shè)置了-XX:+PrintGCDetails后,G1比起其它HotSpot GC要啰嗦得多,因為它會打印每個GC線程的計時和其它有助于進(jìn)行故障排除的信息,如果你想使GC日志更簡單,請使用-verbosegc參數(shù)。

Java 7 G1***進(jìn)展

G1開發(fā)現(xiàn)在主要集中在遺留的可靠性問題和改善性能,同時也在逐步移除下面的限制:

◆G1不能完全支持JVM工具接口(JVM TI)或Java管理擴(kuò)展(JMX),因此關(guān)于G1的監(jiān)視和管理工具很可能不能正常工作;

◆G1不支持增量***性代回收,如果一個應(yīng)用程序產(chǎn)生了許多類轉(zhuǎn)儲,需要***性代回收,這在完整GC期間是可以實現(xiàn)的;

◆從GC暫停時間來說,G1有時表現(xiàn)比CMS好有時比CMS差。

原文:Java HotSpot Garbage Collection

【編輯推薦】

  1. Java SE 6中的垃圾回收器G1收費(fèi)是虛驚一場
  2. 垃圾回收器G1收費(fèi)登場 是否預(yù)示Java將面臨分叉威脅
  3. JDK 7中將支持正則表達(dá)式命名捕獲組
  4. 6月5日外電頭條:探秘Java 7模塊化 類路徑永遠(yuǎn)消失
  5. 4月17日外電頭條:Java 7將向細(xì)顆粒并行化發(fā)展
責(zé)任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2009-08-14 08:56:49

Java垃圾回收器G1

2024-10-22 16:26:11

2009-06-02 10:18:43

Java垃圾回收器垃圾回收器Java垃圾回收

2022-02-25 08:01:34

CMS

2011-06-28 12:39:34

Java垃圾回收

2023-11-16 08:00:56

Java11G1

2009-06-18 13:59:33

Java SE 6垃圾回收器

2020-06-01 20:08:47

垃圾G1回收器

2024-12-03 09:01:33

2021-08-10 07:00:02

Java8 G1垃圾回收器

2010-09-26 14:08:41

Java垃圾回收

2021-08-15 18:59:13

垃圾收集器JDK

2015-06-17 14:10:52

OracleJava 9垃圾收集器

2015-07-29 10:28:59

JVM參數(shù)配置參數(shù)

2022-08-29 08:01:43

G1CMS回收器

2020-05-14 13:39:19

Java 垃圾回收機(jī)制

2022-01-20 10:34:49

JVM垃圾回收算法

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2021-01-04 10:08:07

垃圾回收Java虛擬機(jī)
點贊
收藏

51CTO技術(shù)棧公眾號