読者です 読者をやめる 読者になる 読者になる

俺の備忘録

個人的な備忘録です。

VisualVMの使い方メモ

VisualVMとは

Oracle JDKに含まれるJavaのパフォーマンス分析用のツール。 ざっくり言うと以下が見れる

  • ヒープメモリの使用状況
  • スレッドの状態
  • CPU利用率
  • メモリに乗っているオブジェクトの数

※基本的に画面を見れば何が表示されているかわかるので細かい使い方については記載しない。

起動方法

<JDKインストールディレクトリ>\bin\jvisualvm
/usr/bin/jvisualvm

※環境によって異なるので注意

監視対象と監視方法

監視対象のjavaプロセスが誰の持ち物かで監視方法が少し異なる

  1. 自分で立ち上げたjavaプロセスの場合、jvisualvm立ち上げただけで監視可能

  2. 別のマシンで実行されているjavaプロセスの場合、または他のユーザ(STETEMやroot)が立ち上げたjavaプロセスの場合、 jstatdを利用する。

jstad とは

jstatd ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバーアプリケーションです。

要はjavaプロセスを監視するためのツール
これを立ちあげればデバッグオプションとかつけて何もつけずに起動したjavaプロセスや 監視したいけど、停止できないjavaプロセスとかが監視できるようになる。

 

起動方法

jstatd -J-Djava.security.policy=<ポリシーファイル>
jstatd -J-Djava.security.policy=<ポリシーファイル> -p <ポート番号> <-既に1099を使用している場合はこっちを使ってポート番号を指定する

 

ポリシーファイルの内容

grant {
    permission java.security.AllPermission;
};

 

注意事項
よくWindowsの場合はSYSTEMアカウントでLinuxの場合はrootアカウントでjavaプロセスがサービスとして動いている。 そういったjavaプロセスを監視したい場合は、SYSTEMアカウントもしくはrootでVisualVMを起動する必要ある。
WindowsでSYSTEMアカウントでプロセスを起動するためにはタスクスケジューラを介するなど工夫が必要。

 

で、VisualVMの画面で、
ローカルを右クリックして、jstatd接続を追加するか、

f:id:magayengineer:20160118223359p:plain

 

リモートを右クリックして、リモートホストを追加でjstatdを立ち上げているホストを入力すると、

f:id:magayengineer:20160118223432p:plain

 

マシンで実行しているjavaプロセスの一覧が追加される。

 

f:id:magayengineer:20160118223600p:plain