【コラム】
システム開発の現場では予期しないトラブルが付き物だ。Javaの場合、ヒープメモリやGCに関するトラブルが発生することが多い。この場合、GCログやヒープダンプを解析することで原因の特定を試みることになる。今回はこれらのトラブルが発生した場合に役立つツールを紹介する。
jconsoleはJDKに標準で付属するJMXクライアントツールで、Java VMのリソースの利用状況を監視するのによく利用される。JDKインストールディレクトリのbinディレクトリ配下のjconsole.exeで起動することができ、ローカルで動作しているプロセスのほか、リモートで動作しているJava VMに接続することも可能だ。JDKのインストールディレクトリ直下のbinディレクトリにあるjconsole.exe(Windowsの場合)で起動することができる。
アプリケーションにメモリリークの疑いがある場合、まずはjconsoleでメモリの使用量を監視するといいだろう。また、JDKにはこのほかにも以下のようなコマンドが用意されている。覚えておくとリソース監視や障害解析などの際に役立てることができるはずだ。
| コマンド | 説明 |
|---|---|
| jps | Java VMのプロセスIDを表示 |
| jstat | Java VMのGC状態などを監視 |
| jstack | Java VMのスタック情報を取得 |
| jmap | Java VMのヒープダンプなどを取得 |
| jhat | ヒープダンプを解析するためのツール |
VisualVMはjconsole同様JDKに標準で付属するツールで、Java VMの統合管理ツールだ。標準でJava VMのモニタリング機能やプロファイル機能などが提供されており、その他の機能をプラグインで追加することもできるようになっている。JDKのインストールディレクトリ直下のbinディレクトリにあるjvisualvm.exe(Windowsの場合)で起動することができる。
jconsoleよりも高機能なツールとなっているため、こちらを利用する機会のほうが多いかもしれない。ただし、JDK 1.6.0 update 7で導入されたツールであるため、それ以前のバージョンのJDKでは標準では添付されていないことに注意してほしい。
VisualVMはjava.netで開発されているため、古いバージョンのJDKを使用している場合はjava.netのプロジェクトサイトから別途ダウンロードして利用するといいだろう。また、java.netのプロジェクトサイトからはEclipseやIntelliJ IDEAにVisualVMを統合するためのプラグインも入手することができる。
Eclipse Memory AnalyzerはJava VMのヒープダンプを解析するためのツールだ。Eclipseプラグインのほか、スタンドアロンで動作可能なバージョンが提供されている。
まずは以下のようにjmapコマンドでヒープダンプを出力する。
jmap -dump:format=b <プロセスID>
カレントディレクトリにbeap.binというファイルが出力されるので、これをEclipse Memory Analyzerに読み込めば図3のように解析結果がビジュアルに表示される。
JDKにはjhatコマンドというヒープダンプをブラウズするためのツールが同梱されているが、これと比べるとEclipse Memory Analyzerは非常に使いやすい。ヒープダンプを解析する場合はぜひ活用したいツールだ。
侍はスレッドダンプやGCログを解析するためのツールだ。起動すると表示されるウィンドウにログファイルをドラッグ&ドロップすることでファイルの監視が開始され、リアルタイムに解析が行われる。スタンドアロンのSwingアプリケーションでダウンロードしたJARファイルをダブルクリックするだけで実行可能だが、Java Web Startでも利用可能となっており手軽に試すことができる。
今回紹介したツールはJavaでの開発時に必須のツールというわけではなく、そうそう頻繁に利用する類のツールでもないが、いざトラブルが発生したときに知っていると役立つことは間違いない。こういったツールの存在だけでも覚えておくといいだろう。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
JRグループ、「周遊きっぷ」を見直し - 19の周遊ゾーンが3/31で販売終了に [07:30 2/11] ライフ |
|
「青春18きっぷ」春季用は2/20発売 - 夏季用・冬季用の発売は現時点で未定 [07:30 2/11] ライフ |
|
【ハウツー】炊飯器でつくるチャーシューが簡単すぎ、しかもおいしい! [07:00 2/11] ライフ |
|
【連載】出社前に。日常生活ですぐに使える! 英語クイズ 第118回 「どうぞお話しください、あなたが話す番です」ってなんて言う? [07:00 2/11] ライフ |
|
[観月ありさ]濃姫役で戦国時代劇初挑戦 信長役は城田優 SPドラマ「濃姫」 [05:00 2/11] エンタメ |