真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么觸發(fā)YoungGC或FullGC操作

本篇內(nèi)容主要講解“怎么觸發(fā)YoungGC或FullGC操作”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么觸發(fā)YoungGC或FullGC操作”吧!

在和縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站制作,和縣網(wǎng)站建設(shè)費(fèi)用合理。

(一)關(guān)于垃圾回收

JAVA的垃圾回收需要完成三件事情:

1、哪些內(nèi)存需要回收

2、什么時(shí)候回收

3、如何回收

下面就從這三個(gè)問題出發(fā)去了解Java的垃圾回收機(jī)制。

(二)哪些垃圾需要回收

在垃圾回收之前,首要的問題是確定哪些垃圾需要被回收,現(xiàn)在Java通過根搜索算法(GC Roots Tracing)來判斷一個(gè)對象是否存活,這個(gè)算法的思路就是通過一系列名為“GC Roots”的對象作為起始點(diǎn),從這些節(jié)點(diǎn)向下搜索,當(dāng)GC Roots到達(dá)不了這個(gè)某個(gè)對象時(shí)(或者說某個(gè)對象沒有被任何其他對象所引用),就證明這個(gè)對象是不可用的,這些對象會被判定為需要回收的對象。

怎么觸發(fā)YoungGC或FullGC操作

如圖,ObjC是不可達(dá)的,這個(gè)對象就是需要被回收的對象。

在Java語言中,可作為GC Roots的對象包括下面這些:

1、虛擬機(jī)棧(棧幀中的本地變量表)中引用的對象

2、方法區(qū)中的類靜態(tài)屬性引用的對象

3、方法區(qū)中的常量引用的對象

4、本地方法棧(Native方法)引用的對象

(三)什么時(shí)候回收

關(guān)于如何回收的問題,我參考了《深入理解Java虛擬機(jī)》,根搜索算法中不可達(dá)的對象,并不是立刻就會被回收,而是會經(jīng)過一次標(biāo)記:

如果對象沒有覆蓋finalize()方法,或者finalize()方法已經(jīng)被調(diào)用,虛擬機(jī)會判定這個(gè)對象沒必要執(zhí)行finalize(),在這一次標(biāo)記中該對象不會被回收。

如果這個(gè)對象被標(biāo)記為有必要執(zhí)行finalize()方法時(shí),它會被放置在一個(gè)名為F-Queue的隊(duì)列中,稍后由虛擬機(jī)進(jìn)行垃圾回收。

但是這個(gè)對象還有最后一次逃脫的機(jī)會,當(dāng)在F-Queue時(shí),虛擬機(jī)會對F-Queue中的對象作小規(guī)模的標(biāo)記,如果發(fā)現(xiàn)此時(shí)某個(gè)對象又可達(dá)了,就會逃過GC的命運(yùn)。

(四)如何回收

如何回收垃圾的問題歸根結(jié)底就是垃圾回收算法如何回收垃圾的問題。這里主要介紹三種垃圾回收算法的執(zhí)行思路:

4.1 標(biāo)記-清除算法(Mark-Sweep)

這種算法分為標(biāo)記和清除兩個(gè)階段,首先標(biāo)記出所有需要回收的對象,在標(biāo)記完成后統(tǒng)一回收掉被標(biāo)記的對象。 怎么觸發(fā)YoungGC或FullGC操作

看圖就可以明白了,這個(gè)算法的問題在于,清除之后會產(chǎn)生大量不連續(xù)的空間碎片。

4.2 復(fù)制算法(Copying)

復(fù)制算法將內(nèi)存分為兩塊,每次使用其中一塊,垃圾回收時(shí),將正在使用的那塊內(nèi)存中存活的內(nèi)存放入另一塊內(nèi)存中,然后清空原內(nèi)存塊,圖示圖下: 怎么觸發(fā)YoungGC或FullGC操作 復(fù)制算法被廣泛應(yīng)用于新生代的垃圾回收,由于新生代的對象有百分之98左右都是要被回收的,因此新生代的內(nèi)存會被分為一塊Eden空間和兩塊Survivor空間,比例為8:1:1。

第一次YGC只回收eden區(qū)域,回收后大多數(shù)(百分之九十八左右)的對象會被回收,活著的對象通過復(fù)制算法進(jìn)入Survivor0(后續(xù)用S0和S1代替)。再次YGC后,eden+S0中活著的對象進(jìn)入S1。再次YGC,eden+S1中活著的對象進(jìn)入到S0。依次循環(huán)

4.3 標(biāo)記-整理(Mark-Compact)

標(biāo)記-整理算法分為標(biāo)記、整理、清除三步,第一步也是標(biāo)記出可回收的對象,然后讓存活的對象移到一邊,然后直接清理掉邊界外的垃圾。

怎么觸發(fā)YoungGC或FullGC操作 標(biāo)記整理算法被廣泛應(yīng)用于老年代的垃圾回收。

(五)何時(shí)觸發(fā)YoungGC或FullGC

YoungGC的觸發(fā)時(shí)常在發(fā)生,當(dāng)新生代的Eden區(qū)滿了之后就會觸發(fā)YoungGC。

FullGC在多個(gè)情況下都會被觸發(fā):

1、發(fā)生Young GC之前進(jìn)行檢查,如果“老年代可用的連續(xù)內(nèi)存空間” < “新生代歷次Young GC后升入老年代的對象總和的平均大小”,說明本次Young GC后可能升入老年代的對象大小,可能超過了老年代當(dāng)前可用內(nèi)存空間,此時(shí)會觸發(fā)FullGC

2、當(dāng)老年代沒有足夠空間存放對象時(shí),會觸發(fā)一次FullGC

3、如果元空間區(qū)域的內(nèi)存達(dá)到了所設(shè)定的閾值-XX:MetaspaceSize=,也會觸發(fā)FullGC。

到此,相信大家對“怎么觸發(fā)YoungGC或FullGC操作”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


當(dāng)前題目:怎么觸發(fā)YoungGC或FullGC操作
URL分享:http://weahome.cn/article/jcpipd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部