成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java新型垃圾回收器G1深入探索

開發 后端
JDK 7中新增的垃圾回收器G1是一個“服務器風格(server-style)”的垃圾回收器,本文向您介紹他的屬性、狀態和一些使用特性。

G1垃圾回收器

“G1垃圾回收”的英文全稱是 Garbage-First Garbage Collector (又被稱作G1 GC),這是一個新型的垃圾回收器,由JDK 7中的Java HotSpot VM 引入。這個技術曾經在Java SE 6 Update 14版本中出現過一個試驗性的,然后 G1 被 HotSpot的 反應快速(low-latency)的 Concurrent Mark-Sweep GC (簡稱 CMS)長期取代。

屬性

G1 是一個“服務器風格(server-style)”的垃圾回收器,它主要有下面的這些屬性:

并行和并發。 G1 可以從今天最新的硬件中獲得并行的能力。它能夠使用所有可用的CPU(CPU多核,硬件多線程,等)來加速它的 “stop-the-world” 機制(這個機制簡稱STW,即,在執行垃圾收集算法時,Java應用程序的其他所有除了垃圾收集幫助器線程之外的線程都被掛起)。

分代處理。 就像其它的HotSpot 垃圾回收器,G1 是分代的,也就是說,它在處理新分配的對象(年輕代)和已經生存了一段時間的對象(年老代)時會不同,它會更多地考慮一些新創建的對象實例,因為越新創建的就越有最大的可能性被回收,老對象只是偶爾訪問一下。對于大多數的Java應用來說,這個機制可以極大地提高回收效率。

緊湊內存(碎片整理)。 不像CMS,G1 會對堆進行內存整理。壓縮可以消除潛在的內存碎片的問題,這樣程序就可以更長時間的平滑運行。

預見性的。 G1 比起 CMS 來有更多的預見性。這個主要還是用來消除內存碎片的問題。內存的碎片少了,Stop-the-World的暫停時間也會被減少。

描述

比起其它的HotSpot 垃圾回收器來說,G1 使用了一種非常不同尋常的方法來管理堆內存的布局。在G1中,在對象新生代和老一代上沒有在物理上把他們分隔開來。取而代之的是,它把一個連續的堆內存拆分成了幾個相同大小的區域。新產生的對象和老的對象都會被放在一系列可能不會連續的區域中。之所以這樣做,就是為了讓G1可以更靈活地移動老對象所占用的資源給新的對象。

G1中的內存收集會發生 “疏散暫停”,當內存從一系例區域開始回收時,這些區域所引用的 collection set 會被疏散到另一些區域中,這樣,我們會有一整塊的內存來重新被申請。疏散會發生整個程序的暫停,但“疏散”這些內存可以被并行運行,當然,你要有多核或多線程技術來支持。絕大多數的“疏散暫停”會去收集那些可用的比較新的內存區域,因此,這和其它的 HotSpot 垃圾回收器是相同的。偶而才會去查看一下老區域中的內存是否可以回收。

在 CMS中,其周期性的執行一個 concurrent marking phase。 這個phase中最主要的事情是,識別哪些老的區域中充滿了可以回收的對象,因為這是最有效率和最合適的回收。但在G1中,G1不會執行那個所謂的 concurrent sweeping phase, 取而代之的是,去識別那些的最合適的老的區域是在并發的“疏散暫停”中進行的(后面會做介紹)。

使用 G1

G1 目前仍然還在試驗階段,使用下面兩個參數可以打開G1機制:

-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC

下面是設置垃圾回收器的暫停時間:

-XX:MaxGCPauseMillis =50 (設置暫停時間為 50ms)

在G1中,你還可以給垃圾回收器的暫停設置一個時間間隔:

-XX:GCPauseIntervalMillis =200 (設置暫停時間間隔 200ms)

注意,上面的兩個參數只是代表目標,回收器并不保證。他們可能在某些情況下工作地很好,也可能在其它情況下不行,所以,垃圾回收器并不總是服從這兩個參數設置。

另外,新生代的內存大小可以被設置,這個參數同樣會影響“疏散暫停”的時間:

-XX:+G1YoungGenSize=512m (設置新生代內存為 512兆字節)

G1 同樣可以使用survivor 空間,是的,這就是多少個區域。大小可以由通用的參數所指定(如: -XX:SurvivorRatio=6).

最后,如果你要發揮G1的所有潛能,你可以嘗試設置下面兩個參數,它們默認上是關閉的,因為在一些很稀有的情況下,這兩個參數會發生race condition(競爭條件):

-XX:+G1ParallelRSetUpdatingEnabled
-XX:+G1ParallelRSetScanningEnabled

還有一件事是G1能夠報告比其它垃圾回收站更詳細的信息,當然,你需要設置下面這個參數:

 -XX:+PrintGCDetails

這個參數會輸出很多有用的信息供你查看性能與以 trouble-shooting。如果你想要簡單的日志,你可以把這個開關設置到 -verbosegc 。

狀態

◆G1 開發目前主要關注于解決一些殘留的穩定性的問題,以及提高性能,并且去除下面的限制:

◆G1 并不完全支持 JVM Tool Interface (JVM TI) 或 Java Management Extensions (JMX),所以,這些監控和管理工具無法正確地作用于G1。

◆G1 不支持增量的永生代collection。如果一個應用在卸載很多的類,因些需要很多的永生代Collection,目前的G1還不支持,不過最終版會支持。
 
關于垃圾回收器的暫停時間,G1的表現比起CMS來說是時好時壞。所以,還有很多工作需要讓G1的表現更加穩定,絕不能比CMS還差,不然G1還有什么意思呢?

 

【編輯推薦】

  1. 探秘Java 7新增垃圾回收器G1特性
  2. Java SE 6中的垃圾回收器G1收費是虛驚一場
  3. 垃圾回收器G1收費登場 是否預示Java將面臨分叉威脅
  4. JDK 7中將支持正則表達式命名捕獲組
  5. 探秘Java 7模塊化 類路徑永遠消失
責任編輯:佚名 來源: 酷殼的博客
相關推薦

2025-05-16 08:00:00

2009-07-24 09:41:45

Java 7 G1垃圾回收器

2024-10-22 16:26:11

2009-06-02 10:18:43

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

2022-02-25 08:01:34

CMS

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-15 18:59:13

垃圾收集器JDK

2021-08-10 07:00:02

Java8 G1垃圾回收器

2015-06-17 14:10:52

OracleJava 9垃圾收集器

2021-10-05 20:29:55

JVM垃圾回收器

2025-04-15 01:55:00

2020-05-14 13:39:19

Java 垃圾回收機制

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-01-20 10:34:49

JVM垃圾回收算法

2010-09-26 14:08:41

Java垃圾回收

2022-03-21 11:33:11

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

2011-06-28 12:39:34

Java垃圾回收
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 网址黄| 国产男人的天堂 | 亚洲午夜精品一区二区三区 | 国产亚洲精品久久久久久豆腐 | 黄色一级电影免费观看 | 毛片电影| 欧美成人精品一区二区男人看 | 久久99深爱久久99精品 | 久草在线青青草 | 一级片av| 台湾av在线 | 国产一区二区三区不卡av | 亚洲视频一区在线 | 日韩一区在线播放 | 日韩成人av在线 | 亚洲一区在线日韩在线深爱 | 国产精品久久久久久久久久妞妞 | 国产亚洲精品久久久久久豆腐 | 日本中文字幕一区 | 国产日韩精品视频 | 国产精品18hdxxxⅹ在线 | 你懂的av | 亚洲视频免费在线看 | 久久精品亚洲成在人线av网址 | 亚洲欧美日韩一区 | 97av视频| 香蕉一区二区 | 91视频亚洲| 日韩中文在线视频 | 国产精品成人一区二区三区吃奶 | 日韩乱码在线 | 国产精品入口麻豆www | 91在线网| 成人精品免费视频 | 在线成人免费视频 | 欧美成人h版在线观看 | 一色桃子av一区二区 | 久久伊人精品 | 中文字幕在线视频免费观看 | 国产一级片av | 日韩专区中文字幕 |