溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

什么時(shí)候觸發(fā)GC

發(fā)布時(shí)間:2020-07-20 22:11:12 來(lái)源:網(wǎng)絡(luò) 閱讀:1011 作者:愛(ài)與夢(mèng)想 欄目:軟件技術(shù)

Young GC----針對(duì)年輕代

當(dāng)Eden區(qū)滿(mǎn)了的時(shí)候,會(huì)觸發(fā)Young GC


Full GC----針對(duì)整個(gè)堆

1. 在發(fā)生Young GC的時(shí)候,虛擬機(jī)會(huì)檢測(cè)之前每次晉升到老年代的平均大小是否大于年老代的剩余空間,如果大于,則直接進(jìn)行Full GC;

2. 如果小于,但設(shè)置了Handle PromotionFailure,那么也會(huì)執(zhí)行Full GC。promotion failed是在進(jìn)行Minor GC時(shí),survivor space放不下、對(duì)象只能放入老年代,而此時(shí)老年代也放不下造成的。

3. 永久代空間不足,會(huì)觸發(fā)Full GC

4. System.gc()也會(huì)觸發(fā)Full GC

5. 堆中分配很大的對(duì)象

所謂大對(duì)象,是指需要大量連續(xù)內(nèi)存空間的java對(duì)象,例如很長(zhǎng)的數(shù)組,此種對(duì)象會(huì)直接進(jìn)入老年代,而老年代雖然有很大的剩余空間,但是無(wú)法找到足夠大的連續(xù)空間來(lái)分配給當(dāng)前對(duì)象,此種情況就會(huì)觸發(fā)JVM進(jìn)行Full GC。為了解決這個(gè)問(wèn)題,CMS垃圾收集器提供了一個(gè)可配置的參數(shù),即-XX:+UseCMSCompactAtFullCollection開(kāi)關(guān)參數(shù),用于在“享受”完Full GC服務(wù)之后額外免費(fèi)贈(zèng)送一個(gè)碎片整理的過(guò)程,內(nèi)存整理的過(guò)程無(wú)法并發(fā)的,空間碎片問(wèn)題沒(méi)有了,但提頓時(shí)間不得不變長(zhǎng)了,JVM設(shè)計(jì)者們還提供了另外一個(gè)參數(shù) -XX:CMSFullGCsBeforeCompaction,這個(gè)參數(shù)用于設(shè)置在執(zhí)行多少次不壓縮的Full GC后,跟著來(lái)一次帶壓縮的。

6.?CMS GC concurrent mode failure

concurrent mode failure是在執(zhí)行CMS GC的過(guò)程中同時(shí)有對(duì)象要放入老年代,而此時(shí)老年代空間不足造成的(有時(shí)候“空間不足”是CMS GC時(shí)當(dāng)前的浮動(dòng)垃圾過(guò)多導(dǎo)致暫時(shí)性的空間不足觸發(fā)Full GC)。


CMS GC----針對(duì)年老代

  1. 配置了-XX:CMSInitiatingOccupancyFraction=75和-XX:+UseCMSInitiatingOccupancyOnly,設(shè)定CMS在對(duì)內(nèi)存占用率達(dá)到75%的時(shí)候開(kāi)始GC

  2. 配置了-XX:+CMSClassUnloadingEnabled,CMSInitiatingPermOccupancyFraction=80%,即:Perm Gen的使用達(dá)到一定的比率,默認(rèn)為92%

  3. 配置了-XX:+ExplicitGCInvokesConcurrent,未配置-XX:+DisableExplicitGC的情況下,顯示調(diào)用了System.gc()

CMS在并發(fā)模式工作的時(shí)候是只收集old gen的。但一旦并發(fā)模式失?。òl(fā)生concurrent mode failure)就有選擇性的會(huì)進(jìn)行全堆收集,也就是退回到full GC。

向AI問(wèn)一下細(xì)節(jié)
推薦閱讀:
  1. php gc
  2. java GC筆記

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI