亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        JVM虛擬機(jī)之Garbage-First垃圾收集器

        2019-08-21 03:09:36肖洋
        商情 2019年34期

        肖洋

        【摘要】在JVM(Java Virtual Machine)的研究上,有很多方面的應(yīng)用,但是在其最基礎(chǔ)的依賴應(yīng)用上,還要說一說性能管理相關(guān)的應(yīng)用。我們通過對(duì)Garbage-First(簡(jiǎn)稱G1)的研究,從各個(gè)方面總結(jié)出G1的優(yōu)劣勢(shì),讓各個(gè)JVM中能更優(yōu)的選擇相關(guān)的垃圾收集器。本文總結(jié)了G1相關(guān)特性,列舉了部分的應(yīng)用場(chǎng)景及有利條件,從而給使用者一個(gè)更正確的應(yīng)用場(chǎng)景。

        【關(guān)鍵詞】垃圾收集器 JVM Garbage-First

        一.引言:

        自2000年以來,我國(guó)的互聯(lián)網(wǎng)技術(shù)得到了突飛猛進(jìn),在相關(guān)創(chuàng)新、應(yīng)用、研究上也有了不同程度的進(jìn)展。在應(yīng)用服務(wù)器上,選擇垃圾回收器是最重要的環(huán)節(jié)之一,它不僅僅是有利于程序的研發(fā),在某些場(chǎng)景里,更可能作為與別的應(yīng)用程序的競(jìng)爭(zhēng)優(yōu)勢(shì)。

        在JVM垃圾收集器歷史發(fā)展上,相關(guān)的垃圾收集器已經(jīng)百花齊放了。但是不同垃圾收集器,有不同的優(yōu)劣勢(shì),也有不同的工作場(chǎng)景,所以,在應(yīng)用服務(wù)器選擇垃圾收集器的同時(shí),也需要選擇恰當(dāng)?shù)睦占鳌?/p>

        JVM的垃圾收集器,從Serial收集器到ParNew,再到后面先進(jìn)的CMS(Concurrent Mark Sweep),到現(xiàn)在使用的G1垃圾收集器以及研發(fā)階段的Shenandoah都在對(duì)相關(guān)算法不斷的升級(jí)與改造,但是任何算法都不是完美的,只有最合適某一種應(yīng)用場(chǎng)景的算法,沒有適合所有應(yīng)用場(chǎng)景的算法。

        二.G1收集器

        2.1 何為G1垃圾收集器

        G1(Garbage-First)垃圾收集器是目前的虛擬機(jī)垃圾收集器中比較先進(jìn)的垃圾收集器之一,在JDK1.7中替換了原本的CMS垃圾收集器[1]。相比較CMS垃圾收集器,G1倍受關(guān)注的是收集器在工作時(shí)的STW(Stop The World)的時(shí)長(zhǎng)。G1的優(yōu)勢(shì)非常明顯,并行與并發(fā)、分代手機(jī)、空間整合、可預(yù)測(cè)性停頓等等[2]都是G1在發(fā)布時(shí)不可替代的優(yōu)勢(shì),這樣就使之成為現(xiàn)在風(fēng)靡一時(shí)的垃圾回收器。

        2.2 G1垃圾收集器算法特點(diǎn)

        G1垃圾收集器作為現(xiàn)在最流行的垃圾回收器,當(dāng)然有它一定的優(yōu)勢(shì)。在CMS垃圾機(jī)制時(shí)期,我們都知道JVM的堆內(nèi)存,是需要進(jìn)行Eden區(qū),Servivor區(qū)和Old Genaretion區(qū)的分配[3]。但是對(duì)于G1來說,JVM并不需要分配那么復(fù)雜的內(nèi)存區(qū)分配。對(duì)象的所有生命周期,都可以在一個(gè)區(qū)內(nèi)完成。堆被分成一組相等的堆區(qū)域,沒一個(gè)區(qū)域都是一個(gè)連續(xù)的虛擬內(nèi)存區(qū)域[4]。G1在對(duì)象的生命周期里面,管理著所有對(duì)象的年齡,用其來標(biāo)識(shí)該對(duì)象的生命活動(dòng),是該清除,還是保持不變或者進(jìn)入下一個(gè)生命周期。

        在所有的垃圾回收階段,G1都采用標(biāo)記-清除(Mark-Sweep)的算法進(jìn)行計(jì)算。標(biāo)記-清除算法,分兩部分,首先對(duì)所有可達(dá)的存活對(duì)象進(jìn)行標(biāo)記;然后就是清除,對(duì)未標(biāo)記的對(duì)象進(jìn)行垃圾清理。G1垃圾收集器大部分都是采用的并行方式進(jìn)行,只有在重新標(biāo)記和重新清除階段,是STW時(shí)間,所以這樣就大大的減少了STW時(shí)間。

        在垃圾清除完后,所有的空間都是碎片化的,傳統(tǒng)的CMS是不會(huì)進(jìn)行碎片化壓縮[5]。所以,這時(shí)候G1就需要對(duì)所有碎片化的內(nèi)存區(qū)域進(jìn)行整理。在最后一次清楚SWT后,堆內(nèi)存的所有空間程碎片狀態(tài)。這時(shí)候G1就會(huì)將這些碎片內(nèi)存整理到一個(gè)連續(xù)的內(nèi)存,當(dāng)然,G1是采用分區(qū)(Region)的思路,所以在對(duì)象的存儲(chǔ)空間上,并不要求是物理內(nèi)存上的連續(xù),而可以是邏輯上的連續(xù)[6]。

        三.應(yīng)用場(chǎng)景

        可以認(rèn)識(shí)到G1具備很多優(yōu)勢(shì),無論是并發(fā),還是碎片整理,但是我們要知道的是G1不是實(shí)時(shí)的垃圾收集器。G1的第一個(gè)重點(diǎn)應(yīng)用場(chǎng)景為解決堆內(nèi)存較大的應(yīng)用程序,堆內(nèi)存大于6G的堆內(nèi)存應(yīng)用的可預(yù)測(cè)暫停時(shí)間為0.5秒。這樣可預(yù)測(cè)的暫停時(shí)間,能使應(yīng)用程序的運(yùn)行能更加精準(zhǔn)、穩(wěn)定。

        如果應(yīng)用程序當(dāng)前使用的是CMS或者ParallelOld,要切換到G1時(shí),需要具備以下幾個(gè)特點(diǎn),將更有利:

        1. 超過了一半的堆內(nèi)存占用了實(shí)時(shí)數(shù)據(jù)

        2. 對(duì)象的rate(分配率)或者promotion(使用率)的差異較大[7]

        3. 垃圾收集暫停時(shí)長(zhǎng)或者內(nèi)存壓縮時(shí)長(zhǎng)超過0.5秒

        如果具備以上特點(diǎn)的應(yīng)用程序,有利且建議能從CMS或者ParallelOld切換到G1。

        四. 總結(jié)

        G1對(duì)于在未來發(fā)展中,能長(zhǎng)期替換CMS的JVM垃圾收集器,它有著更好的解決方案,一個(gè)是堆內(nèi)存壓縮,能對(duì)堆內(nèi)存進(jìn)行密集而且細(xì)粒度的自由分配;第二個(gè)是能夠預(yù)測(cè)性的知道STW的時(shí)長(zhǎng),這樣在主觀研發(fā)上,能更加精準(zhǔn)的銜接。

        對(duì)于JVM的新型垃圾收集器,在未來發(fā)展中已經(jīng)形成了一個(gè)新型的垃圾收集器雛形——Shenandoah[8],它具備超低延遲,無論是在500MB內(nèi)存,還是在500GB內(nèi)存中,都具備相同STW時(shí)間。這樣對(duì)于G1來說,在更大的內(nèi)存中,具備更強(qiáng)的應(yīng)用性?!皼]有最好的算法,只有適用的場(chǎng)景”,這才是真正的垃圾收集器最核心的算法。

        參考文獻(xiàn):

        [1]周志明.《深入理解JVM虛擬機(jī)》.機(jī)械工業(yè)出版社 2011.

        [2]周志明.《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第二版)》 .機(jī)械工業(yè)出版社 2013.

        [3]http://www.cs.umd.edu/~pugh/java/broken.pdf

        [4]Sun Microsystems.《Memory Management in the Java HotSpot?Virtual Machine》.2006

        [5]https://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html

        [6]https://www.oracle.com/technetwork/java/javase/memorymanagement-whitepaper-150215.pdf

        [7]https://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html

        [8]http://openjdk.java.net/jeps/189

        少妇我被躁爽到高潮在线影片| 亚洲va中文字幕无码| 国产精品久久婷婷六月丁香| 小黄片免费在线播放观看| 国产精品久久av高潮呻吟| 草青青在线视频免费观看| 国产三级国产精品国产专播| 亚洲一区二区三区日韩在线观看| 小池里奈第一部av在线观看| 天天综合网网欲色| 亚洲自偷自拍另类第1页| 国自产拍偷拍精品啪啪一区二区 | 日韩女优一区二区视频| 午夜天堂精品一区二区| 激情五月开心五月av| 亚洲黄色av一区二区三区| 亚洲不卡一区二区视频| 国产亚洲自拍日本亚洲| 无码人妻久久久一区二区三区| 伊人久久大香线蕉午夜av| 久久久久成人精品无码中文字幕 | 亚洲级αv无码毛片久久精品| 美女胸又www又黄的网站| 亚洲日产无码中文字幕| 亚洲国产精品久久九色| 校花高潮一区日韩| 国产美女亚洲精品一区| 亚洲黄色一插一抽动态图在线看| 蜜桃av噜噜噜一区二区三区| 午夜视频手机在线免费观看| 男女打扑克视频在线看| 99久久无色码中文字幕人妻蜜柚| 少妇无码太爽了不卡视频在线看 | 亚洲精品天堂成人片av在线播放 | 最好的99精品色视频大全在线| 日韩精品熟妇一区二区三区| 少妇被又大又粗又爽毛片| 少女韩国电视剧在线观看完整| 久久久精品国产sm调教网站| 人妻系列无码专区久久五月天| 天天射色综合|