簡體   English   中英

G1GC GC日志是什么意思?

[英]G1GC GC logs what do they mean?

我不了解G1GC GC日志的確切含義(添加PrintGCDetails和PrintGCTimeStamps時)。 有人可以闡明語法嗎?

[

GC pause (young), 0.03067078 secs]
   [SATB Drain Time:   0.2 ms]
   [Parallel Time:  22.6 ms]
      [GC Worker Start Time (ms):  165213430.0  165213430.0  165213430.0  165213430.0  165213430.0  165213430.0  165213430.1  165213430.1]
      [Update RS (ms):  10.7  10.0  11.1  9.9  9.9  11.2  10.6  8.6
       Avg:  10.3, Min:   8.6, Max:  11.2]
         [Processed Buffers : 14 8 8 12 9 11 10 8
          Sum: 80, Avg: 10, Min: 8, Max: 14]
      [Ext Root Scanning (ms):  2.5  2.6  2.9  3.4  3.3  2.7  2.6  2.4
       Avg:   2.8, Min:   2.4, Max:   3.4]
      [Mark Stack Scanning (ms):  0.0  0.0  0.0  0.0  0.0  0.0  0.0  2.2
       Avg:   0.3, Min:   0.0, Max:   2.2]
      [Scan RS (ms):  4.0  4.1  3.1  3.7  3.9  3.2  3.8  3.9
       Avg:   3.7, Min:   3.1, Max:   4.1]
      [Object Copy (ms):  4.7  5.3  4.7  4.8  4.7  4.7  4.8  4.7
       Avg:   4.8, Min:   4.7, Max:   5.3]
      [Termination (ms):  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
       Avg:   0.0, Min:   0.0, Max:   0.0]
         [Termination Attempts : 23 1 26 23 19 29 22 25
          Sum: 168, Avg: 21, Min: 1, Max: 29]
      [GC Worker End Time (ms):  165213452.3  165213452.3  165213452.3  165213452.3  165213452.3  165213452.3  165213452.3  165213452.3]
      [Other:   0.7 ms]
   [Clear CT:   0.6 ms]
   [Other:   7.3 ms]
      [Choose CSet:   0.0 ms]
   [ 3329M->3245M(6000M)]

完整GC是什么意思? 它是暫停嗎? 使用哪種GC算法? 為什么G1決定使用它?

5.941: [Full GC 7891K->4756K(6000M), 0.1939233 secs]

很少有信息“是否將暫停並行化?” 用Java的話來說,GC有兩種類型(基於與mutator並發的應用程序)-(1)Stop-the-world(2)Concurrent

世界停止GC進一步細分為-1a)如果GC線程數為1,則停止運行1b)如果GC線程數為1以上,則並行

來自oracle g1gc博客TechNetwork文章

完整GC是什么意思?

對於G1GC ,任何大於區域大小一半的對象都被視為“大型對象 ”。 這樣的對象在上一代中直接分配到“ 大型區域 s”中。 These Humongous regions are a contiguous set of regions.

在清理階段以及整個垃圾收集周期的標記周期結束時,將Dead Humongous objects are freed

為了減少復制開銷,任何疏散暫停均不包括Humongous對象。 完整的垃圾收集周期將龐大的對象壓縮到位。

通常, Full GC可以清理整個堆- 年輕的和終身使用的空間(舊一代)

另一方面,您必須擔心“應用程序線程停止”了多少時間,而與GC類型無關:Young GC或Full GC等。

它是並行的嗎?

YounGC is parallelized but not FullGC

完整的GC: Currently G1 full gc is single threaded and very slow,我們應該盡量避免使用完整的gcs(來自oracle文章)

使用哪種GC算法?

您是指Young GC / Major GC / Full GC? 從您的日志中,最后一行是Full GC,第一行是YounGC。

為什么G1決定使用它?

解釋了對第一個查詢的響應。

關於G1GC的微調,請看oracle 文章和相關的SE問題

以下是從我可以在G1 GC上在線找到的(相當有限的)材料的幾行之間的閱讀。 (在付費專區后面有2004年的論文,JavaWorld 2008的幻燈片演示,以及G1 GC頁面 。如果還有其他鏈接,請添加它們。)

完整GC是什么意思?

與其他HotSpot GC一樣,堆分為新空間或Eden空間,幸存者空間和舊空間或占有權對象空間。 但是,與其他HotSpot GC不同,G1使用多個區域來保存空間。

通常,G1收集器與應用程序線程並行地遞增運行,將對象跟蹤和“疏散”到其他區域。 但是,似乎收集器有時會遠遠落后於它必須停止的所有操作,並使用所有可用的處理器來收集所有堆區域。 我認為這是一個完整的GC。

它是暫停嗎?

我認為它是並行的,但也可以停止運行。

使用哪種GC算法?

不清楚。

為什么G1決定使用它?

往上看。 它太落后了,堆里堆滿了垃圾。

暫無
暫無

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

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