Javaパフォーマンスのツールボックスパフォーマンス分析は可視化と表裏一体です。アプリケーションの内部や、その実行環境で起こっていることを知るのがパフォーマンス分析で、可視化にはツールが不可欠です。オペレーティングシステム付属のツールと分析プログラムの分析の手始めになるツールは、Javaとの直接の関係はまったくなく、OSに付属している、基本的な監視のツールを利用します。パフォーマンステストを行う際には、OSからもCPUとメモリ、ディスクの使用率は最低限収集すべきです。ネットワークを利用するプログラムでは、ネットワークの使用率も必要です。30秒)の平均値を表しています。CPUの使用率とは、プログラムがどの程度効率的にCPUを使えているかということを表しているので、この値が大きければ大きいほど望ましい状態になります。ディスクの使用率ディスクの使用率を監視することには、2つの大きな意味があります。1つ目は、アプリケーション自体に関わるものです。2つ目は、システムがスワッピングを行なっているかどうかわかるという点です。ネットワークの使用率ネットワークを利用するアプリケーションでは、ネットワークのトラフィックも監視しなければなりません。UNIXシステムでの基本的なネットワーク監視ツールとしては、netstatがよく使われます。Javaの監視ツールJVM自体に関する情報を得るには、Java向けの監視ツールが必要です。以下のようなツールがJDKに付属しています。jcmd指定されたJavaのプロセスについて、クラスやスレッドそしてJVMの基本的な情報を出力します。jconsoleJVMのアクティビティをグラフィカルに表現します。スレッドやクラスの利用状況、ガベージコレクションの内容などがわかります。jhatメモリのヒープダンプを分析しやすい形で出力します。事後的な分析に利用されます。jmapヒープダンプや、JVMでのメモリの使用に関する情報を出力します。JVMのシステムプロパティを表示します。一部のシステムプロパティについては、あたいの変更も行えます。jstackJavaのプロセスのスタックをダンプします。jstatガベージコレクションやクラスローディングのアクティビティに関する情報を出力します。jvisualvmJVMの監視、実行中のアプリケーションに対するプロファイリング、JVMのヒープダンプの分析のためのGUIツールです。JVMが実行されている時間を取得します。通じて得られるのと同じ情報が出力されます。VM.command_lineJVMのチューニングフラグアプリケーションの中で有効かされているチューニングフラグは以下のようにして取得します。[-all]スレッドの情報jconsoleやjvisualvmを使うと、アプリケーション内で実行されているスレッドの数をリアルタイムに表示できます。スレッドの実行がブロックされているかどうかを知りたい場合には、スレッドスタックを確認するとよいでしょう。これにはjstackを利用します。Thread.printクラスの情報アプリケーションの中で利用されているクラスの数を調べるには、jconsoleやjstatを使います。jstatではクラスのコンパイルに関する情報を得ることもできます。ガベージコレクションの動的な分析jconsoleはヒープの使用率をグラフとしてリアルタイムに表示でき、jcmdはガベージコレクションを実行させることができます。プロファイリングツールパフォーマンスアナリストにとって、プロファイラは最も重要なツールの1つです。プロファイラはソケットなどの通信手段を使って対象のアプリケーションに接続し、アプリケーションのふるまいに関する情報を取得します。したがって、プロファイリング対象のアプリケーションと同じくらいプロファイラ自身についてもチューニングを行わなければなりません。Controlと呼ばれる新しい監視と制御の仕組みが含まれています。利用には商用ライセンスが必要です。Controlのプログラム(jmc)を起動すると、マシン上でのJVMのプロセスがウインドウ内に表示されます。