常に 100% の CPU 使用率を示す Java アプリがありました。top
コマンドでいくつかの奇妙な結果に気付いたとき、いくつかの支配的なスレッドがあるかどうかを調べようとしていました。
を実行するtop
と、CPU 時間が 100% の Java プロセスが1 つ表示されました。次にH
、スレッドを表示するように入力しました。最初に、いくつかのJava スレッドがそれぞれ 100% で表示されました。ただし、次の更新では、それぞれ 100% の CPU を使用する複数の Java スレッドの別のバッチが再び表示されました。次の更新、別のバッチ。これは、100% CPU の 100 程度のスレッドを通過する数回の更新サイクルで何度も繰り返されました。最終的には、それぞれ約 10% の CPU 時間を使用する Java スレッドが 10 個ほどあるという状態に落ち着きました。この「最終的な」スレッドのセットは、最初は 100% の CPU 時間を示したスレッドと同じでしたが、現在はそれぞれ 10% しかありませんでした。直接実行top -H
すると、最終セットに直接到達しました。
私の直感では、Java スレッドの 100% の CPU はやや偽物でした。しかし、私はそれについての説明を見つけることができませんでした。
Debian Wheezy ボックスを使用しています。