10

CPU を 100% に固定する JVM プロセスがまれにあり、(visualgc によると) 非常に使い果たされたヒープのように見えます。私たちの推測では、プロセスが英雄的に GC を実行して CPU スパイクを引き起こし、システム全体 (別のことをしている他の JVM で構成されている) の全体的な状態に影響を与えていると考えられます。

このプロセスは重要ではなく、再開できます。コマンドラインを介してJVMを調整し、GCを続けてボックス全体を苦しめるのではなく、JVMを独自の剣に落とす方法はありますか?

注目すべきは、OOMExceptions を取得していないため、ヒープが完全に使い果たされているわけではありませんが、かろうじてそうではないと考えています。

または、JVM で実際に CPU を使用しているものについて、GC の仮定を確認/否定する方法についての洞察を与えるものはありますか?

4

5 に答える 5

4

から統計を取得できます

1): オプション -XX:+PrintGCTimeStamps は、各コレクションの開始時にタイム スタンプを追加します。これは、ガベージ コレクションの発生頻度を確認するのに役立ちます。

上記のオプションを使用すると、プロセスが勇敢に GC を実行して CPU スパイクを引き起こしていると仮定するかどうかに関係なく、大まかな見積もりを取得できます。

あなたの仮定が正しければ、GC のチューニングを開始してください。

 Both parallel collector and Concurrent Collector will throw an OutOfMemoryError if too much time is being
 spent in garbage collection: if more than 98% of the total time is spent in garbage collection and 
less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. the option X:-UseGCOverheadLimit 
 is enabled by default for both Parallel and concurrent collector . Check whether this option is disabled in
 your system .  

JVM での Gc チューニングの詳細については、これを参照してください。VM デバッグ オプションについては、これを確認してください。

于 2013-01-18T09:37:50.917 に答える
3

並列コレクターと並行コレクターには、必要なことができる「オーバーヘッド制限」があります。

合計時間の 98% 以上がガベージ コレクションに費やされ、回復されたヒープが 2% 未満の場合、OutOfMemoryError がスローされます。

詳細については、 http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.htmlを参照してください。

于 2013-01-17T19:25:34.583 に答える
2

最善の方法は、メモリリークを見つけて修正することです。

メモリ使用量が多い場合に終了する簡単な方法:

if(Runtime.getRuntime().totalMemory()>100*1024*1024)
    System.exit(0);
于 2013-01-17T18:49:46.213 に答える
2

JVMで現在実行されているプロセスを調べてみてください。

  • スレッドダンプをjstack作成できます(これを行う方法は他にもあります)
  • あなたと一緒jvisualvmにJVMの現在の状態を覗くことができます(いくつかのリソースを取ります)
  • また、オンにしverbosegcます(GCが頻繁に発生するという仮定を証明するため)
于 2013-01-17T18:50:22.017 に答える
1

GC 作業に関する統計を収集する方法を見つける必要があります。実はこれにはいくつかの方法があります。コピー&ペーストはしません。同様の質問へのリンクを提供してください。

Java で基本的な GC 統計を取得できますか?

この統計を分析する方法を考え、いつ GC が常にアクティブになるかを判断することになると思います。

この質問にはGC統計を適用するという新しいアイデアが含まれているため、重複しているとは思いません。

于 2013-01-17T18:36:03.497 に答える