1

ここに私の gc.log の抜粋があります:

2013-02-28T12:02:13.209+0100:1486457.849:[GC 1486457.850:[PARNEW 3483368K-> 96838K(3774912K)、0.2273030秒] 8085678K-> 471036K(471036K)、0.227304K [471036K] 0.01、実数 = 0.23 秒]

2013-02-28T12:02:26.551+0100:1486471.191:[GC 1486471.191:[PARNEW 3452358K-> 125528K(3774912K)、0.2386800 SECS ] 8065856K-> 4748-1.4748-1.4748-1.47482K(474872K) 0.01、実数 = 0.24 秒]

2013-02-28T12:02:27.398+0100:1486472.038:[ Full GC 1486472.039:[CMS:4623244K-> 3323834K(46137344K)、3.0873920秒] 503462924344 / 3.4434K(46137344K) 98304K)]、3.0878880 秒] [時間: user=3.04 sys=0.01、real=3.08 秒]

2013-02-28T12:02:42.758+0100:1486487.398:[GC 1486487.399:[PARNEW 3355519K-> 50321K(3774912K)、0.0289980 Secs ] 0.00、実数 = 0.03 秒]

2013-02-28T12:02:59.045+0100:1486503.685:[GC 1486503.685:[PARNEW 3405841K-> 71853K(3774912K)、0.0316570秒] 6729676K> 339968K [0.222525252525252525252525252525252525252525252525252525252525252525252520K) 0.00、実数 = 0.03 秒]

フル GC の後 (perm スペースが使い果たされたため)、若い世代のコレクションは 0.23 秒から 0.03 秒 (10 回) に減少します。

perm スペースがいっぱいになる理由を突き止める必要がありますが、Full GC によって若い世代の収集時間が 10 分の 1 に減少する理由がわかりません。

誰でも私を助けることができますか?

ありがとう、ジョアン。

4

1 に答える 1

1

言及されたログで、私はいくつかの点を知ることができます。

理由は次のとおりです。

プログラムが実行されると、割り当てが発生し、参照が行われます。短命のオブジェクトは死に、残りはサバイバー スペースまたはパーマ スペースに昇格します。

参照可能な状況は以下のとおりです。

1) eden 空間 (より若い世代) と Survivor 空間のオブジェクトは、Perm 空間と Tenured 空間のオブジェクトを参照して、それらをより長く存続させます。

2) perm 空間と tenured 空間のオブジェクトが若い世代のオブジェクト (eden 空間と Survivor 空間) を参照することがあります。

Tenured および perm スペースでのガベージ コレクションは、若い世代ほど頻繁ではないためです。

perm space または tenured space 内のobj1というオブジェクトが参照されなくなり、GC によって要求される準備ができている状況が発生する可能性があるため、このobj1は GC を待機していますが、これはまれに発生します。そしてエデンスペース。そのため、 obj1によって参照される Eden 空間と Survivor 空間にあるこのオブジェクトは、ガベージ コレクションの対象になりません。そのため、eden 空間と Survivor 空間にこのようなオブジェクトが多数存在し、perm 空間のobj1などのオブジェクトによって参照されている可能性があります。これにより、eden 空間とSurvivor 空間のオブジェクト数が増加します。そのため、マイナー GC により多くの時間がかかります。

完全な GC では、obj1のようなオブジェクトが収集されるため、obj1 のようなオブジェクトによって参照される eden および Survivor 内のオブジェクトGC によって要求されず、eden および Survivor 空間内のオブジェクトが少なくなります。オブジェクトの数が少ないため、マイナー GC にかかる時間が短くなります。さらにログがゆっくりとマイナー Gc 時間が再び増加しているのを観察した場合 (ログに記載されているように 0.0289980 秒、0.0316570)、次の FULL GC まで増加する可能性があります。

Full GC の前に GC 時間のパターンを観察することもできます。増加しています。(ログに記載されているように 0.2273030 秒、0.2386800 秒)

于 2013-02-28T22:03:26.590 に答える