4

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]
4

3 に答える 3

2

「一時停止ですか、並列化されていますか?」に関する情報はほとんどありません。Javaの用語では、GCは2つのタイプです(ミューテーターとの並行性、つまりアプリケーションに基づく)-(1)Stop-the-world(2)Concurrent

Stop-the-world GCは、さらに次のようにサブカテゴリ化されます-1a)GCスレッドの数が1の場合はStop-the-world 1b)GCスレッドの数が複数の場合はParallel

于 2011-04-30T05:45:15.267 に答える
0

oracle g1gc のブログtechnetwork の記事から

そして、完全な GC とはどういう意味ですか?

G1GCの場合、領域サイズの半分を超えるオブジェクトは「巨大なオブジェクト」と見なされます。このようなオブジェクトは、古い世代で「 Humongous region s」に直接割り当てられます。These Humongous regions are a contiguous set of regions.

Dead Humongous objects are freedクリーンアップ フェーズ中のマーキング サイクルの終了時、および完全なガベージ コレクション サイクル中。

コピーのオーバーヘッドを減らすために、Humongous オブジェクトは退避一時停止には含まれません。完全なガベージ コレクション サイクルは、Humongous オブジェクトを適所に圧縮します。

通常、フル GCはヒープ全体をクリーンアップします – Young スペースと Tenured スペースの両方 (古い世代)

別のメモとして、GC の種類 (Young GC や Full GC など) に関係なく、「アプリケーション スレッドが停止した」時間を気にする必要があります。

一時停止ですか、それは並列化されていますか?

YounGC is parallelized but not FullGC

完全な GC: Currently G1 full gc is single threaded and very slow,可能な限り完全な GC を避けるようにする必要があります (オラクルの記事から)

どのGCアルゴリズムが使用されていますか?

ヤングGC/メジャーGC/フルGCのことですか?ログから、最後の行は Full GC で、最初の行は YounGC です。

なぜG1はそれを使うことにしたのですか?

最初のクエリの応答で説明します。

G1GC の微調整については、Oracleの記事と関連するSE の質問をご覧ください。

于 2016-02-13T18:14:06.137 に答える
0

以下は、G1 GC でオンラインで見つけた (かなり限定された) 資料の行間を読んだものです。(ペイウォールの後ろに 2004 年の論文、JavaWorld 2008 のスライドショー、G1 GC ページがあります。他のリンクがある場合は、それらを追加してください。)

そして、完全な GC とはどういう意味ですか?

他の HotSpot GC と同様に、ヒープは New または Eden スペース、Survivor スペース、および Old または Tenured Object スペースに分割されます。ただし、他の HotSpot GC とは異なり、G1 は複数のリージョンを使用してスペースを保持します。

通常、G1 コレクタはアプリケーション スレッドと並行して段階的に実行され、オブジェクトをトレースして他の領域に「退避」します。ただし、コレクタが非常に遅れて、すべてを停止し、使用可能なすべてのプロセッサを使用してすべてのヒープ領域を収集する必要がある場合があるようです。これはフルGCだと思います。

それは一時停止ですか、それは並列化されていますか?

並列化されていると思いますが、ストップ・ザ・ワールドでもあります。

どのGCアルゴリズムが使用されていますか?

それは明らかではありません。

なぜG1はそれを使うことにしたのですか?

上記を参照。遅れすぎて、ヒープがガベージでいっぱいになりました。

于 2011-03-08T08:39:09.050 に答える