1

私のプログラムは常に最大 1% の CPU 使用率で実行されていますが、プログラム内で特定できないイベントが発生したため、15 秒ごとに約 5 ~ 10 秒間使用率が 100% になることがあります。使用量の急増を引き起こしているスレッドのように見えますが、その原因を特定できません (8000 のクラスがあるため、非常に困難です)。問題がまだ存在するかどうかをテストするのは困難です (たとえば、コードの一部を「デッド」にした後)。その問題は、仮想マシンの寿命の数時間後に存在し始めることがあるためです。

その問題の原因を見つけるのに何が役立つか考えていますか?

4

1 に答える 1

5

これ以上の情報がなければ、問題の原因を推測することさえできません。

VisualVMなどのプロファイラーを使用して、問題の原因となっているスレッドと、問題が発生したときの正確な状況を特定することをお勧めします。

プロファイラーを使用すると、たとえば次のようになります。

  • アクティブで CPU リソースを消費しているスレッドはどれか
  • VM スレッドかアプリケーション スレッドか
  • ガベージ コレクション操作に費やされる時間 - GC は、多くの場合、CPU 使用率の急上昇の原因となるため、レイテンシが発生しますが、最近の JVM はその点で改善されていると思います。
  • ロックの問題があるかどうか
  • ...
于 2012-11-10T13:35:54.140 に答える