以前のブログエントリーで、Java ヒープ領域のメモリリーク発見支援ツールとして、以下のような jmap コマンドを実行して取得したヒストグラム比較して、オブジェクト数の差分でソートして降順で出力するというツールを作ったのでちょこちょこ更新して晒し中。
jmap -histo:live [対象 Java アプリケーションのプロセス ID]
1 ヶ月くらい前に、こちらのブログエントリーにあるとおり、主に API の整備が目的のマイナーアップデートです(個人的には、ソースコード管理に Google Code を使うようになってからの最初のリリースだ!という思いはありますが)。以下、version 0.4.5 として、Runnable jar なファイルとソースコードを添付、ならびに Javadoc を晒します。
- Runnable jar: download from here
- ソースコード: download from here
- Javadoc: http://www.geocities.jp/akihiro_quitada/Mononov/Javadoc/045/
ソースコードは見る価値は特にないです(だいぶ作り替えて工夫したので、個人的には今回はビッグリリースだと思ってますが)。使い方ですが、前バージョン同様、添付 jar ファイルを CLASSPATH に通した状態で以下のコマンドを実行してもよいですし…
java quitada.JavaObjectDiff [メモリリーク前のヒストグラムファイル] [メモリリーク後のヒストグラムファイル]
Runnable jar なので、以下でもよいです。
java -jar JavaObjDiff-v0.4.5.jar [メモリリーク前のヒストグラムファイル] [メモリリーク後のヒストグラムファイル]
詳しい使い方とか、シュガーシンタックス的なものは、--help オプションで確認してください。
java -jar JavaObjDiff-v0.4.5.jar --help
今回のメインは API の整備です。今までは、API とはいっても、JavaObjectDiff オブジェクトを作って、CUI で最終的にコールする runMerge() メソッドをプログラムからコールできるだけで、出力も標準出力にだらだだすだけで、プログラムから使用可能な状況ではなかったですが、これは deprecated な宣言もせずに、いきなり作り替えました。すんません。今回は、MononovFactory というファクトリークラスチックなものを提供して、そこから以下のようにコールして、結果を ObjectInfo オブジェクトをソートされた配列に入れて返却するようにしました。
使い方は以下のような感じです。
import quitada.Mononov; import quitada.MononovFactory; import quitada.ObjectInfo; : Mononov mnv = new MononovFactory() .setSortType("instance") .setSortOrder("asc") .setPathBefore("before.txt") .setPathAfter("after.txt") .create(); ObjectInfo[] oi = mnv.runMerge();
設定したい内容を、setXX() メソッドコールで羅列していって、最後に create() で、Mononov オブジェクトを取得できるので、それに対して runMerge() をコールします。setXX() メソッドについては、上述の Javadoc を見て、なんとか使い方を想像してください。とりあえず、サンプルコードをつけておきます(MononovFactoryTest.java )。こちらのサンプルにあるとおり、一部の setXX() メソッドは MononovException をスローすることがあるので、try〜catch でくくってやりましょう。
JUnit 対応は遅れそうなので、今後のロードマップを若干変更したく思います。
JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (69件) を見る
Oracle Jrockit: The Definitive Guide
- 作者: Marcus Lagergren,Marcus Hirt
- 出版社/メーカー: Packt Publishing
- 発売日: 2010/06/30
- メディア: ペーパーバック
- クリック: 16回
- この商品を含むブログ (2件) を見る
-
- GAE 上の Web アプリケーションとして提供
- バージョン 0.6: 10 月中に対応したい
- バージョン 1.0: 今年中に作りたい・対応したい
- Web アプリケーション部分に対するテストフレームワークの整備
- GUI の提供。ナイスな GUI 開発ツールを選定したいところ(Visual Swing for Eclipse あたり?)
- 専用 Web サイト開設
- バージョン 1.1 or later: できるかどうか不明なので予定は未定