- - PR -
jhatの利用
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-09-03 11:27
Tomcatを運用していますが、メモリリークとおもわれる状況があり、レスポンスの低下、
OutOfMemoryによるシステム停止が発生しています。 そこでjhatでクラス別のインスタンス数等を調べようとしています。 CATALINA.batに以下の行を追加し、 set JAVA_OPTS=%JAVA_OPTS% -agentlib:hprof=format=b Tomcatを起動し、現象発生するオペレーションを実行すると、起動フォルダに ファイルjava.hprof ができるので、見ようとすると C:\tomcat\bin>jhat java.hprof Reading from java.hprof... Dump file created Wed Sep 03 09:50:19 JST 2008 java.io.IOException: Unrecognized heap dump sub-record type: 108 at com.sun.tools.hat.internal.parser.HprofReader.readHeapDump(HprofReade r.java:485) at com.sun.tools.hat.internal.parser.HprofReader.read(HprofReader.java:2 22) at com.sun.tools.hat.internal.parser.Reader.readFile(Reader.java:79) at com.sun.tools.hat.Main.main(Main.java:143) とエラーになってしまいます。 どこか変更すればうまくいくでしょうか? jhatの使用テストでjavaアプリケーションの実行、jhatでの参照は以下のようにうまく いっています。 C:\java\test>java -agentlib:hprof=format=b ref C:\java\test>jhat java.hprof Reading from java.hprof... Dump file created Wed Sep 03 11:15:05 JST 2008 Snapshot read, resolving... Resolving 5198 objects... Chasing references, expect 1 dots. Eliminating duplicate references. Snapshot resolved. Started HTTP server on port 7000 Server is ready. 上のうまくいってるときのjava.hprofのサイズは440Kほどですが、本当に処理したい Tomcat実行時のjava.hprofは150Mほどあります。 環境 WindowsXP Pro SP1 tomcat-5.5.16 C:\java\test>java -version java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sh C:\java\test>jhat -version jhat version 2.0 (java version 1.6.0_07) |
1