4

私が開発したアプリケーションに問題があります。長時間実行すると、CPU 負荷がゆっくりと上昇します。これは、45 分後の Java VisualVM のスクリーンショットです。

ここに画像の説明を入力

ご覧のとおり、メモリ使用量は非常に一定しており、スレッド数も同様です。アプリケーションは LAN ソケットを開き、2 秒ごとに測定を行います。この測定は別のスレッドで実行されます (スレッド プロットの右下に表示されます)。

CPU 使用率はゆっくりと、しかし確実に増加し、一晩で約 70 ~ 80% まで蓄積され、その時点でシステム全体がかなり遅くなります (明らかに)。もちろん、この増加は望んでいませんが、その理由を見つけることができません。メモリ リークも発生せず (メモリの継続的な増加にもつながります)、さらに多くのスレッドを生成することもありません (カウントも安定しているため)。

私のアプリには、広範な GUI と複数のスレッドがあります。プロファイラーからのスレッドリストは次のとおりです。

ここに画像の説明を入力

「私の」スレッドに黄色のマークを付けました。そのため、MeasurementCommunication.startMeasurementスレッドは必要に応じて作成 (および終了) されます。そのため、いつでも走っているのはそのうちの1人だけです。

要するに、この CPU の増加がどこから来ているのかはわかりません。あなたはなにか考えはありますか?多分それは一般的なJavaの問題ですか? さらに情報や詳細が必要な場合は、私に言ってください。私はそれらに答えようとします. ;)

4

1 に答える 1

3

使用済みのヒープを見るだけで、17:00 から上昇しているように見えます。必要なことは、それをより長い期間キャプチャし、下降して上昇/下降を維持することを確認することですが、通常は使用量が横ばいです、ステップのような結果が生成され始めた場合、つまりさらに上にインクリメントしている場合は、CPU に影響を与える問題の原因となっているメモリ リークである可能性があります。要するに、特にヒープが上昇するときは、より長く監視する必要があります。したがって、各フルガベージコレクション間の状態....

于 2013-02-06T16:14:49.787 に答える