5

アプリケーション/プラットフォームのメモリ使用率が突然急上昇しました。GCの詳細ログで、以下を確認しました。

1285.946: [GC 1285.946: [**ParNew (promotion failed)**: 353920K-353920K(353920K), 0.8003983 secs]1286.747: [CMS1287.338:
[CMS-con current-sweep: 7.902/9.624 secs] [Times: user=96.62 sys=2.35,
real=9.62 secs]  (**concurrent mode failure**):
2531317K->1161025K(2752512K), 24.8330303 secs]
2860005K->1161025K(3106432K), [CMS Perm : 37117K->3 6905K(62368K)],
25.6341706 secs] [Times: user=26.41 sys=0.05, real=25.63 secs] [ POA RootPOA - rid: 17 oid: 00 17 2E 29 23 33 49 34 25 3E  opname: ping -
process request ]
1312.367: [GC 1312.367: [ParNew: 314624K->30240K(353920K), 0.0188874 secs] 1475649K->1191266K(3106432K), 0.0194380 secs] [Time s: user=0.40
sys=0.00, real=0.02 secs]
1313.249: [GC 1313.249: [ParNew: 344864K->39296K(353920K), 0.0300220 secs] 1505890K->1201198K(3106432K), 0.0305488 secs]

ParNew (promotion failed ),concurrent mode failure :

GCの障害が原因で、メモリの突然の急増が見られると思います。説明とこれを解決する方法。

4

2 に答える 2

16

「ParNew(昇格失敗)」とは、若い世代から古い世代に昇格するオブジェクトがありますが、十分なスペースがないことを意味します。古いスペースがほぼいっぱいであるか、プロモートされたオブジェクトが大きすぎて、十分な継続スペースがない可能性があります。

簡単な解決策は、古い世代のサイズを大きくしようとすることです。または、G1アルゴリズムを使用しようとすると、旧世代のフラグメントの問題が軽減される可能性があります。

両方の方法で問題を解決できない場合は、コードを確認して、単一のオブジェクトのサイズを小さくする必要があります。

ちょうど私の2セント、

よろしく、レオン

于 2012-10-29T16:59:25.313 に答える
3

表示されている行から、アプリケーションコードが大量のガベージオブジェクトを作成していると思います。CMS障害のフルGCは、1.4GBのガベージを収集できました。したがって、これは断片化の問題ではなく、CMSが追いついていないという問題です。[CMSパーマ]はあなたのGC設定が何であるか私に興味をそそられます。おそらく、CMSに実行するCPUを増やすことができますか?または、新しいスペースを拡大して、古いものへの時期尚早な昇格を回避することもできます。

しかし、非効率的なコードを実行する可能性があります。プロファイラーを接続して、ガベージ割り当てのホットスポットを探します。

于 2012-11-25T21:31:32.833 に答える