谷本 心 in せろ部屋 このページをアンテナに追加 RSSフィード

2008-07-09

[]VisualVM、Javaデフォルト同梱へ - JDK6u7から

ただし、もっとも注目すべきはほかにある。JDK 6 Update 7からはじめてJava VisualVMが配布物に同梱されるようになったことだ。

VisualVM、Javaデフォルト同梱へ - JDK6u7から -- マイコミジャーナル

Java SE for BusinessにはVisualVMが同梱されるというアナウンスが

以前ありましたが、通常のJDKにも同梱されたようです。

これで随分とVisualVMが使いやすくなるんじゃないかと思います。


また、同じタイミングでVisualVM 1.0が正式にリリースされています。

VisualVMってなにげに不安定な所があったりしたのですが、

正式版ではどうなっているか、今度改めて試してみます。

2008-05-16

[]VisualVMでSAStrutsプロファイリングなど試してみる その2

さて、昨日の続きです。


実は[Profiler]タブを開いた時に、Warningが出ています。

f:id:cero-t:20080517003553p:image

VisualVMは、問題がある時に、結構こうしたエラーメッセージが出て

何をすべきかを教えてくれます。


エラーメッセージに記載されたリンク先の解説を読めば

起動引数に「-Xshare:off」を入れろと書いてあります。

早速、Tomcatのbin/catalina.batでJAVA_OPTSを編集してる箇所に

この起動引数を追加しましょう。

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Xshare:off

これでもう一度、Tomcatを起動しなおします。


f:id:cero-t:20080517003555p:image

VisualVMを起動すると、今度はエラーがなくなりました。


f:id:cero-t:20080517003554p:image

メモリの状況もリアルタイムにプロファイリングすることができます。


ただ、しばらく動かしっぱなしにしたら、やはりいきなり落ちて、

Tomcatのbinディレクトリには、昨晩と同じくhs_err_pir*.logが出来ました。

発生しているエラーの内容も全く同じようです。


何がいけないんでしょうか。後で調べてみましょう。

2008-05-15

[]VisualVMでSAStrutsプロファイリングなど試してみる その1

VisualVMを使って、

ローカルPC上のTomcatで動くWebアプリケーション

プロファイリングを行なってみましょう。


前準備

  1. http://tomcat.apache.org/ よりTomcat6をダウンロードして解凍する。
  2. http://sastruts.seasar.org/ より SAStrutsチュートリアルダウンロードして解凍する。
  3. SAStrutsのwebappのフォルダ名をsastrutsに変更して、Tomcatのwebapps直下にコピー。
  4. Tomcatのbin/startup.batなどを叩いてTomcat6を起動する。
  5. http://localhost:8080/sastruts/ にアクセスする。

これでWebアプリケーションが動き始めます。

今回はSAStrutsを使いましたが、別に何でも構いません。


VisualVMの起動

  1. https://visualvm.dev.java.net/ よりVisualVM1.0RCをダウンロードして解凍する。
  2. bin/visualvm.exeを実行してVisualVMを起動する。

f:id:cero-t:20080516025749p:image

これでVisualVMが起動しました。

なお、初回起動の場合はキャリブレーションが実行されます。


f:id:cero-t:20080516025742p:image

「Local」の下にいる「Tomcat」をダブルクリックすれば、JVMの情報などを確認できます。

右クリックメニューから、スレッドダンプ取得やプロファイリングなどが行なえます。


f:id:cero-t:20080516025741p:image

Java5でTomcatを動かすと、右クリックメニューには

スレッドダンプ取得やプロファイリングなどは出てきません。


f:id:cero-t:20080516025740p:image

[Monitor]タブでは、メモリ使用率やスレッド数を確認することができます。


f:id:cero-t:20080516025746p:image

[Threads]タブでは、稼動中の全スレッドを見ることができます。


f:id:cero-t:20080516025747p:image

DBアクセスを行なった直後。HSQLDBが動き始めたことが分かります。


f:id:cero-t:20080516025748p:image

特定のスレッドをダブルクリップすれば、どれぐらい稼動したりスリープしたかを確認できます。


f:id:cero-t:20080516025744p:image

[Profiler]タブで「CPU」をクリックして、アプリケーションを動かすと

メソッドごとの処理時間と処理発生回数を取得してくれます。

FileSync.syncというメソッドが1回の処理で随分時間を使っているようですが

この処理時間には、Sleepなんかもきっと含まれてるんでしょうね。


ちなみに、「CPU」をクリックした直後にアプリケーションを動かすと

随分と処理に時間が掛かってしまうのですが、

この際にオンデマンドアタッチで、プロファイリング用のバイトコードが埋め込まれるようです。


いったんバイトコードが埋め込まれてしまうと、体感には差が感じられません。

プロファイリングによるオーバーヘッドは随分と小さそうです。


f:id:cero-t:20080516025745p:image

今度は[Profiler]タブで「Memory」をクリックしてみましょう。


、、、あれ?

なんか音もなくTomcatが落ちてしまいました。

Tomcat再起動して、もう一度同じ処理を試してみましたが

やはり結果は同じ。

#

# An unexpected error has been detected by Java Runtime Environment:

#

# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d902e7d, pid=16636, tid=19668

#

# Java VM: Java HotSpot(TM) Client VM (10.0-b19 mixed mode, sharing windows-x86)

# Problematic frame:

# V [jvm.dll+0x92e7d]

#

# If you would like to submit a bug report, please visit:

# http://java.sun.com/webapps/bugreport/crash.jsp

#

EXCEPTION_ACCESS_VIOLATIONが発生してしまったようですね。

ということで、今日はここまでにしましょう。

2008-05-13

[]VisualVMいいよ。

Open Source Troubleshooting for Java - InfoQ

導入が簡単で使いやすい。

プロファイラって、とりあえずNetBeansProfiler安定だったと思うけど

これからは、このVisualVMでもイケるんじゃないかと思う。

ゆっくり使い込んでみる。