VisualVMでJConsoleのJTOPプラグインを使用しています。CPU(秒)の使用量がわかります。これの意味を理解しようとしていますよね?
- a)theeadがCPUを実行している時間(秒単位)。
- b)スレッドが初めて実行を開始した時間(秒単位)(常に実行されているとは限りません)
- c)別の機会に?
期待してくれてありがとう。
VisualVMでJConsoleのJTOPプラグインを使用しています。CPU(秒)の使用量がわかります。これの意味を理解しようとしていますよね?
期待してくれてありがとう。
JDK ディストリビューションの demo/management フォルダーにある JTop Jconsole プラグインの場合: ThreadMXBean.getThreadCpuTime(long) を使用して CPU 時間を取得します。このメソッドの javadoc には次のように記載されています。
指定された ID のスレッドの合計 CPU 時間をナノ秒単位で返します。戻り値はナノ秒の精度ですが、必ずしもナノ秒の精度ではありません。実装がユーザー モード時間とシステム モード時間を区別する場合、返される CPU 時間は、スレッドがユーザー モードまたはシステム モードで実行された時間です。
指定された ID のスレッドが生存していないか存在しない場合、このメソッドは -1 を返します。CPU 時間の測定が無効になっている場合、このメソッドは -1 を返します。スレッドが開始され、まだ終了していない場合、スレッドは生きています。
スレッドの開始後に CPU 時間の測定が有効になっている場合、Java 仮想マシンの実装は、CPU 時間の測定が開始されるポイントとして、その機能が有効になっている時間までの任意の時間を選択できます。
戻り値: 指定された ID のスレッドが存在し、そのスレッドが生きていて、CPU 時間の測定が有効になっている場合は、指定された ID のスレッドの合計 CPU 時間。それ以外の場合は -1。
この値は、表に入れる前にプラグインによって 10E9 で除算されるため、プロセスが CPU を使用していた時間が秒単位で表示されます。
私はそれが a) だと思います。これまでにスレッドが CPU で実行に費やした時間。
実際にはThreadMXBeanの UI です。
その JavaDoc から:
実装がユーザー モード時間とシステム モード時間を区別する場合、返される CPU 時間は、現在のスレッドがユーザー モードまたはシステム モードで実行された時間です。
これは、全体の CPU 時間も実行時間であることを意味します。