日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
FullGC和MinorGC,傻傻分不清楚

full GC 和 Minor GC,傻傻分不清楚

作者:武培軒 2020-03-03 17:35:09

云計(jì)算

虛擬化 這篇文章主要來(lái)介紹下 JVM 中的各種 GC,讓大家來(lái)搞清楚這幾個(gè)概念。大家可能見(jiàn)到過(guò)很多的 GC 名詞,比如:Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC。

 這篇文章主要來(lái)介紹下 JVM 中的各種 GC,讓大家來(lái)搞清楚這幾個(gè)概念。

大家可能見(jiàn)到過(guò)很多的 GC 名詞,比如:Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC。

這么多概念,想想都頭疼,到底各種亂七八糟的 GC 指的是什么?

下面先引用 R 大在知乎上的回答:

針對(duì) HotSpot VM 的實(shí)現(xiàn),它里面的 GC 其實(shí)準(zhǔn)確分類(lèi)有兩種:

Partial GC(局部 GC): 并不收集整個(gè) GC 堆的模式

  • Young GC: 只收集 Young Gen 的 GC,Young GC 還有種說(shuō)法就叫做 Minor GC
  • Old GC: 只收集 old gen 的 GC,只有垃圾收集器 CMS 的 concurrent collection 是這個(gè)模式
  • Mixed GC: 收集整個(gè) Young Gen 以及部分 old gen 的 GC,只有垃圾收集器 G1 有這個(gè)模式

Full GC: 收集整個(gè)堆,包括新生代,老年代,永久代(在 JDK 1.8 及以后,永久代被移除,換為 metaspace 元空間)等所有部分的模式

接下來(lái)讓我們?cè)賮?lái)了解下各個(gè) GC:

(1)Minor GC / Young GC

首先我們先來(lái)看下 Minor GC / Young GC,大家都知道,新生代(Young Gen)也可以稱(chēng)之為年輕代,這兩個(gè)名詞是等價(jià)的。那么在年輕代中的 Eden 內(nèi)存區(qū)域被占滿之后,實(shí)際上就需要觸發(fā)年輕代的 GC,或者是新生代的 GC。

此時(shí)這個(gè)新生代 GC,其實(shí)就是所謂的 Minor GC,也可以稱(chēng)之為 Young GC,這兩個(gè)名詞,相信大家就理解了,說(shuō)白了,就專(zhuān)門(mén)針對(duì)新生代的 GC。

(2)Old GC

所謂的老年代 GC,稱(chēng)之為 Old GC 更加合適一些,因?yàn)閺淖置嬉饬x上就可以理解,這就是所謂的老年代 GC。

但是在這里之所以我們把老年代 GC 稱(chēng)之為Full GC,其實(shí)也是可以的,只不過(guò)是一個(gè)字面意思的多種不同的說(shuō)法。

為了更加精準(zhǔn)的表述這個(gè)老年代 GC 的含義,可以把老年代 GC 稱(chēng)之為 Old GC。

(3)Full GC

對(duì)于 Full GC,其實(shí)這里有一個(gè)更加合適的說(shuō)法,就是說(shuō) Full GC 指的是針對(duì)新生代、老年代、永久代的全體內(nèi)存空間的垃圾回收,所以稱(chēng)之為 Full GC。

從字面意思上也可以理解,F(xiàn)ull 就是整體的意思,所以就是對(duì) JVM 進(jìn)行一次整體的垃圾回收,把各個(gè)內(nèi)存區(qū)域的垃圾都回收掉。

(4)Major GC

還有一個(gè)名詞是所謂的 Major GC,這個(gè)其實(shí)一般用的比較少,他也是一個(gè)非常容易混淆的概念。

有些人把 Major GC 跟 Old GC等價(jià)起來(lái),認(rèn)為他就是針對(duì)老年代的 GC,也有人把 Major GC 和 Full GC 等價(jià)起來(lái),認(rèn)為他是針對(duì) JVM 全體內(nèi)存區(qū)域的GC。

所以針對(duì)這個(gè)容易混淆的概念,建議大家以后少提。如果聽(tīng)到有人說(shuō)這個(gè) Major GC的概念,大家可以問(wèn)清楚,他到底是想說(shuō) Old GC 呢?還是 Full GC 呢?

(5)Mixed GC

Mixed GC 是 G1 中特有的概念,其實(shí)說(shuō)白了,主要就是說(shuō)在 G1 中,一旦老年代占據(jù)堆內(nèi)存的 45%(-XX:InitiatingHeapOccupancyPercent:設(shè)置觸發(fā)標(biāo)記周期的 Java 堆占用率閾值,默認(rèn)值是 45%。這里的Java 堆占比指的是 non_young_capacity_bytes,包括 old + humongous),就要觸發(fā) Mixed GC,此時(shí)對(duì)年輕代和老年代都會(huì)進(jìn)行回收。Mixed GC 只有 G1 中才會(huì)出現(xiàn)。

參考

https://tech.meituan.com/2016/09/23/g1.html

https://www.zhihu.com/question/41922036/answer/93079526

《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第3版)》


當(dāng)前文章:FullGC和MinorGC,傻傻分不清楚
分享鏈接:http://www.5511xx.com/article/coipogj.html