1. gzyueqian
      13352868059

      Java培訓(xùn):什么是Java中的分代垃圾收集?

      更新時(shí)間: 2022-10-31 15:49:22來(lái)源: 粵嵌教育瀏覽量:7731

        Java垃圾收集器實(shí)現(xiàn)了一種按年齡對(duì)對(duì)象進(jìn)行分類(lèi)的分代垃圾收集策略。想深入了解這一特性的同學(xué)可以考慮參加java培訓(xùn),有系統(tǒng)規(guī)范的課程和明確清晰的學(xué)習(xí)路線(xiàn),讓你快速掌握java更多知識(shí)和技能。

        必須標(biāo)記和壓縮JVM中的所有對(duì)象是低效的。隨著越來(lái)越多的對(duì)象被分配,對(duì)象列表會(huì)增加,導(dǎo)致垃圾收集時(shí)間變長(zhǎng)。應(yīng)用程序的經(jīng)驗(yàn)分析表明,Java中的大多數(shù)對(duì)象都是短期的。這就是為什么Java將對(duì)象分類(lèi)為幾代,并相應(yīng)地執(zhí)行垃圾收集。

        年輕一代

        新創(chuàng)建的對(duì)象始于年輕一代。年輕一代進(jìn)一步細(xì)分為:

        l 伊甸園空間—所有新對(duì)象都從這里開(kāi)始,初始內(nèi)存分配給它們

        l 幸存者空間(FromSpace和ToSpace)—在經(jīng)歷了一個(gè)垃圾收集周期后,對(duì)象從伊甸園移到這里。

        當(dāng)對(duì)象被年輕一代垃圾收集時(shí),這是一個(gè)小的垃圾收集事件。當(dāng)伊甸園空間充滿(mǎn)對(duì)象時(shí),將執(zhí)行次要GC。所有死亡對(duì)象都被刪除,所有活著的對(duì)象都被移動(dòng)到一個(gè)幸存者空間。次要GC還檢查幸存者空間中的對(duì)象,并將它們移動(dòng)到另一個(gè)幸存者空間。在java培訓(xùn)中,有很多關(guān)于java內(nèi)存管理和垃圾收集的課程知識(shí),你還能在實(shí)操項(xiàng)目中進(jìn)行更深入的學(xué)習(xí)。

        以以下順序?yàn)槔?/span>

        1.伊甸園擁有所有對(duì)象(活的和死的)

        2.小規(guī)模的垃圾收集—所有死亡對(duì)象都會(huì)從伊甸園中移除,所有活動(dòng)對(duì)象都將移動(dòng)到S1(FromSpace),伊甸園和S2現(xiàn)在是空的。

        3.新對(duì)象被創(chuàng)建并添加到伊甸園,伊甸園和S1中的一些物體已經(jīng)死亡。

        4.小規(guī)模的垃圾收集—所有死亡對(duì)象都從伊甸園和S1中移除,所有活動(dòng)對(duì)象都移動(dòng)到S2(ToSpace),伊甸園和S1現(xiàn)在是空的。

        因此,在任何時(shí)候,一個(gè)幸存者空間總是空的。當(dāng)幸存物體達(dá)到一定的移動(dòng)閾值時(shí),它們會(huì)移動(dòng)到老一代。你可以使用-Xmn標(biāo)志來(lái)設(shè)置年輕一代的大小。

        

        老一代

        長(zhǎng)壽物體最終會(huì)從年輕一代轉(zhuǎn)移到老年一代,這也被稱(chēng)為“終身世代”,它包含了在幸存者空間中停留很長(zhǎng)時(shí)間的對(duì)象。為對(duì)象的使用期限定義了一個(gè)閾值,該閾值決定了在將其移到舊一代之前,它可以存活多少個(gè)垃圾收集周期。在java培訓(xùn)中,有很多關(guān)于垃圾收集的學(xué)習(xí)課程,不僅有理論知識(shí),還有實(shí)踐項(xiàng)目訓(xùn)練,讓你深入淺出地掌握java語(yǔ)言。

        當(dāng)對(duì)象從老一代被垃圾收集時(shí),這是一個(gè)主要的垃圾收集事件。你可以使用-Xms和-Xmx標(biāo)志來(lái)設(shè)置堆內(nèi)存的初始大小和最大大小。

        由于Java使用了分代垃圾收集,對(duì)象存活的垃圾收集事件越多,它在堆中的提升就越大。它從年輕一代開(kāi)始,如果存活時(shí)間足夠長(zhǎng),最終會(huì)在終身制一代結(jié)束。

        請(qǐng)考慮以下示例,以了解對(duì)象在空間和代之間的升級(jí):

        當(dāng)一個(gè)對(duì)象被創(chuàng)造時(shí),它首先被放入年輕一代的伊甸園空間。一旦發(fā)生一次小的垃圾收集,來(lái)自伊甸園的活動(dòng)對(duì)象將被提升到FromSpace。當(dāng)下一次小垃圾收集發(fā)生時(shí),來(lái)自伊甸園和FromSpace的活動(dòng)對(duì)象將移動(dòng)到ToSpace,此循環(huán)持續(xù)特定次數(shù),如果對(duì)象在這一點(diǎn)之后仍在使用,下一個(gè)垃圾收集周期將把它移到老一代空間。參加java培訓(xùn),可以幫你加深對(duì)java垃圾收集的了解,學(xué)到更多的技能,提升工作效率。

        永久代

        類(lèi)和方法等元數(shù)據(jù)存儲(chǔ)在永久代中。JVM在運(yùn)行時(shí)根據(jù)應(yīng)用程序使用的類(lèi)填充它,不再使用的類(lèi)可能會(huì)被永久生成垃圾收集。你可以使用-XX:PermGen和-XX:MaxPermGens標(biāo)志來(lái)設(shè)置永久代的初始大小和最大大小。

        元空間

        從Java 8開(kāi)始,元空間內(nèi)存空間取代了PermGen空間。實(shí)現(xiàn)與PermGen不同,堆的這個(gè)空間現(xiàn)在自動(dòng)調(diào)整大小,這避免了由于堆的PermGen空間有限而導(dǎo)致應(yīng)用程序內(nèi)存不足的問(wèn)題。元空間內(nèi)存可以被垃圾收集,當(dāng)元空間達(dá)到最大大小時(shí),不再使用的類(lèi)可以被自動(dòng)清理。想要學(xué)習(xí)java更多知識(shí)和技能,可以考慮參加java培訓(xùn),有經(jīng)驗(yàn)豐富的專(zhuān)業(yè)講師指導(dǎo)教學(xué),有緊跟市場(chǎng)需求的實(shí)時(shí)課程,可以讓你快速掌握這門(mén)技術(shù),節(jié)約時(shí)間,少走彎路。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 最新国产99热这里只有精品 | 亚洲国产aⅴ综合网 | 五月丁香六月婷婷网线视频 | 色婷婷在线观看中文字幕 | 伊人久久五月天综合网 | 亚洲日韩欧美精品 |