欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:JVM 運(yùn)行時(shí)內(nèi)存(三)

柚子快報(bào)邀請(qǐng)碼778899分享:JVM 運(yùn)行時(shí)內(nèi)存(三)

http://yzkb.51969.com/

Java 堆從 GC 的角度還可以細(xì)分為: 新生代(Eden 區(qū)、From Survivor 區(qū)和 To Survivor 區(qū))和老年代。

1. 新生代

是用來存放新生的對(duì)象。一般占據(jù)堆的 1/3 空間。由于頻繁創(chuàng)建對(duì)象,所以新生代會(huì)頻繁觸發(fā)MinorGC 進(jìn)行垃圾回收。新生代又分為 Eden 區(qū)、ServivorFrom、ServivorTo 三個(gè)區(qū)。

1.1 Eden 區(qū)

Java 新對(duì)象的出生地(如果新創(chuàng)建的對(duì)象占用內(nèi)存很大,則直接分配到老年代)。當(dāng) Eden 區(qū)內(nèi)存不夠的時(shí)候就會(huì)觸發(fā) MinorGC,對(duì)新生代區(qū)進(jìn)行一次垃圾回收。

1.2 ServivorFrom

上一次 GC 的幸存者,作為這一次 GC 的被掃描者。

1.3 ServivorTo

保留了一次 MinorGC 過程中的幸存者。

1.4 MinorGC 的過程(復(fù)制->清空->互換)

? MinorGC 采用復(fù)制算法。

eden、servicorFrom復(fù)制到 ServicorTo,年齡+1

? 首先,把 Eden 和 ServivorFrom 區(qū)域中存活的對(duì)象復(fù)制到 ServicorTo 區(qū)域(如果有對(duì)象的年齡以及達(dá)到了老年的標(biāo)準(zhǔn),則賦值到老年代區(qū)),同時(shí)把這些對(duì)象的年齡+1(如果 ServicorTo 不夠位置了就放到老年區(qū));

清空 eden、servicorFrom

? 然后,清空 Eden 和 ServicorFrom 中的對(duì)象;

ServicorTo 和 ServicorFrom 互換

? 最后,ServicorTo 和 ServicorFrom 互換,原 ServicorTo 成為下一次 GC 時(shí)的 ServicorFrom區(qū)。

2. 老年代

主要存放應(yīng)用程序中生命周期長的內(nèi)存對(duì)象。

? 老年代的對(duì)象比較穩(wěn)定,所以 MajorGC 不會(huì)頻繁執(zhí)行。在進(jìn)行 MajorGC 前一般都先進(jìn)行了一次 MinorGC,使得有新生代的對(duì)象晉身入老年代,導(dǎo)致空間不夠用時(shí)才觸發(fā)。當(dāng)無法找到足夠大的連續(xù)空間分配給新創(chuàng)建的較大對(duì)象時(shí)也會(huì)提前觸發(fā)一次 MajorGC 進(jìn)行垃圾回收騰出空間。

? MajorGC 采用標(biāo)記清除算法:首先掃描一次所有老年代,標(biāo)記出存活的對(duì)象,然后回收沒有標(biāo)記的對(duì)象。MajorGC 的耗時(shí)比較長,因?yàn)橐獟呙柙倩厥?。MajorGC 會(huì)產(chǎn)生內(nèi)存碎片,為了減少內(nèi)存損耗,我們一般需要進(jìn)行合并或者標(biāo)記出來方便下次直接分配。當(dāng)老年代也滿了裝不下的時(shí)候,就會(huì)拋出 OOM(Out of Memory)異常。

3. 永久代

? 指內(nèi)存的永久保存區(qū)域,主要存放 Class 和 Meta(元數(shù)據(jù))的信息,Class 在被加載的時(shí)候被放入永久區(qū)域,它和和存放實(shí)例的區(qū)域不同,GC 不會(huì)在主程序運(yùn)行期對(duì)永久區(qū)域進(jìn)行清理。所以這也導(dǎo)致了永久代的區(qū)域會(huì)隨著加載的 Class 的增多而脹滿,最終拋出 OOM 異常。

3.1. JAVA8 與元數(shù)據(jù)

? 在 Java8 中,永久代已經(jīng)被移除,被一個(gè)稱為“元數(shù)據(jù)區(qū)”(元空間)的區(qū)域所取代。元空間的本質(zhì)和永久代類似,元空間與永久代之間最大的區(qū)別在于:元空間并不在虛擬機(jī)中,而是使用本地內(nèi)存。因此,默認(rèn)情況下,元空間的大小僅受本地內(nèi)存限制。類的元數(shù)據(jù)放入 native memory, 字符串池和類的靜態(tài)變量放入 java 堆中,這樣可以加載多少類的元數(shù)據(jù)就不再由MaxPermSize 控制, 而由系統(tǒng)的實(shí)際可用空間來控制。

4.Minor GC、Major GC、Full GC是什么?

Minor GC是新生代GC,指的是發(fā)生在新生代的垃圾收集動(dòng)作。由于java對(duì)象大都是朝生夕死的,所以Minor GC非常頻繁,一般回收速度也比較快。(一般采用復(fù)制算法回收垃圾)Major GC是老年代GC,指的是發(fā)生在老年代的GC,通常執(zhí)行Major GC會(huì)連著Minor GC一起執(zhí)行。Major GC的速度要比Minor GC慢的多。(可采用標(biāo)記清楚法和標(biāo)記整理法)Full GC是清理整個(gè)堆空間,包括年輕代和老年代

5. Minor GC、Major GC、Full GC區(qū)別及觸發(fā)條件?

Minor GC 觸發(fā)條件一般為: (1)eden區(qū)滿時(shí),觸發(fā)MinorGC。即申請(qǐng)一個(gè)對(duì)象時(shí),發(fā)現(xiàn)eden區(qū)不夠用,則觸發(fā)一次MinorGC。 (2)新創(chuàng)建的對(duì)象大小 > Eden所剩空間時(shí)觸發(fā)Minor GC Major GC和Full GC 觸發(fā)條件一般為: Major GC通常是跟full GC是等價(jià)的 (1)每次晉升到老年代的對(duì)象平均大小>老年代剩余空間 (2)MinorGC后存活的對(duì)象超過了老年代剩余空間 (3)永久代空間不足 (4)執(zhí)行System.gc() (5)CMS GC異常 (6)堆內(nèi)存分配很大的對(duì)象

6.為什么新生代要分Eden和兩個(gè) Survivor 區(qū)域?

如果沒有Survivor,Eden區(qū)每進(jìn)行一次Minor GC,存活的對(duì)象就會(huì)被送到老年代。老年代很快被填滿,觸發(fā)Major GC.老年代的內(nèi)存空間遠(yuǎn)大于新生代,進(jìn)行一次Full GC消耗的時(shí)間比Minor GC長得多,所以需要分為Eden和Survivor。 Survivor的存在意義,就是減少被送到老年代的對(duì)象,進(jìn)而減少Full GC的發(fā)生,Survivor的預(yù)篩選保證,只有經(jīng)歷15次Minor GC還能在新生代中存活的對(duì)象,才會(huì)被送到老年代。 設(shè)置兩個(gè)Survivor區(qū)最大的好處就是解決了碎片化,剛剛新建的對(duì)象在Eden中,經(jīng)歷一次Minor GC,Eden中的存活對(duì)象就會(huì)被移動(dòng)到第一塊survivor space S0,Eden被清空;等Eden區(qū)再滿了,就再觸發(fā)一次Minor GC,Eden和S0中的存活對(duì)象又會(huì)被復(fù)制送入第二塊survivor space S1(這個(gè)過程非常重要,因?yàn)檫@種復(fù)制算法保證了S1中來自S0和Eden兩部分的存活對(duì)象占用連續(xù)的內(nèi)存空間,避免了碎片化的發(fā)生)

7.Java堆老年代( Old ) 和新生代 ( Young ) 的默認(rèn)比例?

默認(rèn)的新生代 ( Young ) 與老年代 ( Old ) 的比例的值為 1:2 ( 該值可以通過參數(shù) –XX:NewRatio 來指定 ),即:新生代 ( Young ) = 1/3 的堆空間大小。老年代 ( Old ) = 2/3 的堆空間大小。 其中,新生代 ( Young ) 被細(xì)分為 Eden 和 兩個(gè) Survivor 區(qū)域,Edem 和倆個(gè)Survivor 區(qū)域比例是 = 8 : 1 : 1 ( 可以通過參數(shù) –XX:SurvivorRatio 來設(shè)定 ), 但是JVM 每次只會(huì)使用 Eden 和其中的一塊 Survivor 區(qū)域來為對(duì)象服務(wù),所以無論什么時(shí)候,總是有一塊 Survivor 區(qū)域是空閑著的。 jvm相關(guān)知識(shí)點(diǎn)持續(xù)更新中!喜歡的話請(qǐng)點(diǎn)贊、收藏、關(guān)注哦!

柚子快報(bào)邀請(qǐng)碼778899分享:JVM 運(yùn)行時(shí)內(nèi)存(三)

http://yzkb.51969.com/

推薦鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19055870.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄