簡體   English   中英

G1:混合gc和完整gc有什么區別?

[英]G1: What are the differences between mixed gc and full gc?

對於垃圾第一收集器, 年輕的gc意味着僅在年輕一代中執行gc並且混合gc將清潔年輕一代和老一代。

什么是完整的gc 為什么它比混合gc持續更長時間?

我做了一些搜索,但我找不到任何解釋完整gc的帖子。

來自Oracle G1 GC博客technetwork文章

年輕的GC:

Young GC的收集集僅包括年輕/幸存者區域。

混合GC:

混合GC的集合包括年輕/幸存者區域,但也包括舊區域。

令人敬畏的物品和豐富的分配

對於G1 GC ,任何超過區域大小一半的對象都被視為“ Humongous對象 ”。 這樣的對象直接在老一代中分配到“ Humongous region s”中。 這些地區是一個連續的地區。

在完全垃圾收集循環期間,在清理階段期間,在標記循環結束時釋放死Humongous對象

為了減少復制開銷,Humongous對象不包括在任何疏散暫停中。 完整的垃圾收集循環將Humongous對象壓縮到位。

通常一個完整的GC清理整個堆 - 年輕和終身空間(舊的)

另外,無論GC類型如何,您都必須擔心“應用程序線程停止”的時間:Young GC或Full GC等。

g1將堆分成區域,其中年輕一代和老一代各自由幾個區域組成。 一個年輕的GC會收集一些地區(並非所有地區),然而,所有地區都分配給年輕一代。 混合GC收集一些區域(不是全部),一些屬於年輕一代,至少一個屬於老一代。 完整的GC收集所有地區,因此,年輕和老一代。

在正常情況下,G1應僅運行年輕和混合收集以滿足其暫停時間目標。

完整的GC是一種后備機制,很可能違反這些目標。 當混合GC無法跟上分配,無法滿足大量分配或使用System.gc()和其他一些條件請求GC時,就會發生這種情況。

使用-XX:+PrintGCDetails日志記錄應包含完整集合的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM