サーバサイドアプリケーションの解析
本連載では、オープンソースソフトウェアを使ったサーバサイドのプロファイル方法を解説してきました。最終回の今回は、いよいよプロファイラを使ってサーバサイドアプリケーションの解析を行います。
NetBeans Profilerの起動
「第2回:NetBeans Profilerを使ってみよう」を参考に、JBossASとNetBeans Profilerの起動、そしてNetBeans Profilerとアプリケーションサーバの接続を行います。
ヒープメモリ確認
ではまず、アプリケーションサーバのヒープメモリを確認してみましょう。NetBeans Profilerのウィンドウ左上にある「ビュー」タブから「VM遠隔測定」ビューをクリックして開きます。
ビューの下にはタブがあり、表示内容を切り替えることができます。それぞれのタブでは以下のような情報を取得できます。
- スレッド(統計)
- アプリケーションサーバ上でアクティブなスレッド数を表示します。
- メモリー(ヒープ)
- JavaVMのヒープメモリの状態を表示します。「ヒープサイズ」はあらかじめアプリケーションサーバに割り当てられたヒープメモリのサイズ、「使用済みヒープ」はアプリケーションで利用しているヒープメモリのサイズになります。
- メモリー(GC)
- ガベージコレクション(GC)に関する情報を表示します。「生存中世代」はヒープ上に存在するJavaオブ ジェクトの異なる世代の数です。「生存中世代」の数が低ければ、世代のばらつきがないことを示しますし、数が高ければ世代のばらつきがあることを示しま す。つまり、この数値が高いときは「古いオブジェクトが残りながら、新しいオブジェクトも生成されている」ことをあらわしており、すなわちメモリを無駄使 いしている可能性が高くなります。「相対GC時間」は、これまでJavaVMがGCに費やした時間を実行時間の相対値で示します。
