日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JVM总结(三)Minor GC、Major GC和Full GC

發(fā)布時(shí)間:2023/12/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM总结(三)Minor GC、Major GC和Full GC 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java與C++之間有一堵由內(nèi)存動(dòng)態(tài)分配和垃圾收集技術(shù)所圍成的“高墻”,墻外面的人想進(jìn)去,墻里面的人卻想出來(lái)。

一、Minor GC

  • Minor GC是指從年輕代空間(包括 Eden 和 Survivor 區(qū)域)回收內(nèi)存。當(dāng) JVM 無(wú)法為一個(gè)新的對(duì)象分配空間時(shí)會(huì)觸發(fā)
    Minor GC,比如當(dāng) Eden 區(qū)滿了。
  • Eden區(qū)滿了觸發(fā)MinorGC,這時(shí)會(huì)把Eden區(qū)存活的對(duì)象復(fù)制到Survivor區(qū),當(dāng)對(duì)象在Survivor區(qū)熬過(guò)一定次數(shù)的Minor
    GC之后,就會(huì)晉升到老年代(當(dāng)然并不是所有的對(duì)象都是這樣晉升的到老年代的),當(dāng)老年代滿了,就會(huì)報(bào)OutofMemory異常。
  • 所有的MinorGC都會(huì)觸發(fā)全世界的暫停(stop-the-world),停止應(yīng)用程序的線程,不過(guò)這個(gè)過(guò)程非常短暫。 執(zhí)行 Minor GC 操作時(shí),不會(huì)影響到永久代。
  • 二、Major GC vs Full GC

    在目前的項(xiàng)目中還沒有明確的定義,這點(diǎn)需要注意。JVM規(guī)范和垃圾收集研究論文都沒有提及,但是乍一看,這些建立在我們掌握了Minor GC清理新生代上的定義并非難事:

    • Major GC清理Tenured區(qū)(老年代)。
    • Full GC清理整個(gè)heap區(qū),包括Yong區(qū)和Tenured區(qū)。

    Full GC觸發(fā)條件
    (1)調(diào)用System.gc時(shí),系統(tǒng)建議執(zhí)行Full GC,但是不必然執(zhí)行
    (2)老年代空間不足
    (3)方法去空間不足
    (4)通過(guò)Minor GC后進(jìn)入老年代的平均大小 > 老年代的可用內(nèi)存
    (5)由Eden區(qū)、From Space區(qū)向To Space區(qū)復(fù)制時(shí),對(duì)象大小大于To Space可用內(nèi)存,則把該對(duì)象轉(zhuǎn)存到老年代,且老年代的可用內(nèi)存小于該對(duì)象大小。即老年代無(wú)法存放下新年代過(guò)度到老年代的對(duì)象的時(shí)候,會(huì)觸發(fā)Full GC。

    補(bǔ)充

    以上的GC總結(jié),只是在非并發(fā)GC的觸發(fā)條件下的大致原理。真正的GC情況跟實(shí)際GC器的回收機(jī)制有關(guān)。不同的GC器對(duì)Major GC 和 Full GC 的機(jī)制還是有區(qū)別的。如JVM中Serial GC, Parallel GC, CMS, G1 GC。會(huì)在后續(xù)的總結(jié)中去總結(jié)。

    總結(jié)

    以上是生活随笔為你收集整理的JVM总结(三)Minor GC、Major GC和Full GC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。