- - PR -
JVMの種類について(クライアントVM/サーバVM)
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-07 09:20
J2SE 5.0から javaオプションで特に指定しないと
JVMが起動する種類を自動で決定してくれる、とドキュメントに書いてありました。 実際にどっちのJVMが起動しているかチェックしたいのですが、 JVM起動後に確認する方法って、どなたかご存知ありませんか? (もしくは起動前でも) また、サーバVMとクライアントVMの詳細な違いが知りたいのですが、 ・起動時間がクライアントVMの方が短い ・サーバ実行速度がサーバVMの方が早い 以外に何か特徴的な違いってあるのでしょうか? またそれぞれの詳細な違い等、ご存知の方いらっしゃったらご教授ください。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-11-07 10:25
起動後に確認する方法はわかりませんが、どのような場合にserver VMが選択される かは、以下のドキュメントに書かれています。 http://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/guide/vm/server-class.html
以下を読んでみてください。 http://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/guide/vm/index.html | ||||||||
|
投稿日時: 2006-11-07 17:57
HotSpotのClient VM、Server VMどちらが選択されるかを調べる方法として、
アプリケーション実行前なら、java -version で表示されるメッセージを読むと判別できます。 アプリケーション実行時に合わせて調べるなら、環境変数_JAVA_LAUNCHER_DEBUGを定義すると起動時にデバッグメッセージが表示されます。メッセージ中のJVM Pathの行を見れば、ディレクトリ名からclientかserverが判別できます。以下Windowsでの表示例を示しますが、Linux/Solaris等においても同様です。
JDKをインストールすると含まれているjvm.cfgファイルに、どのVMを使用するかの選択が記述されています。コマンドラインで指定しない場合、このファイルに記述された有効なVMが選択されます。複数記述されているときは、上に書かれたものが優先的に選択されます。ここを変更すれば、例えばデフォルトではClientVMが選択される環境でもServerVMを選択するよう変更することができます。以下は32bit Windows OSにインストールされたjvm.cfgファイルの内容です。-clientと-serverの行を入れ替えれば、デフォルトで選択されるVMはServerVMになります。
| ||||||||
|
投稿日時: 2006-11-07 18:17
こんにちは、さくらばです。
jconsole などの JMX 管理ツールがあれば起動後に確認できます。 J2SE 5.0 の jconsole であれば、[VM] タブのコンパイラの箇所。 Java SE 6 の jconsole であれば [VMの概要] タブの JIT コンパ イラの箇所に記述されています。 どちらも、RuntimeMXBean の VmName 属性の値が表示されています。 | ||||||||
|
投稿日時: 2006-11-08 09:20
ukさん
>起動後に確認する方法はわかりませんが、どのような場合にserver VMが選択される >かは、以下のドキュメントに書かれています。 Windows系のプロセッサはi386しか書かれていなかったので、 他のはどうなのだろうと思って投稿した次第です。 >以下を読んでみてください。 読んだ上でより詳細な情報が欲しかったので投稿した次第です。 ToGoさん 詳細な情報ありがとうございます。 非常に参考になりました。 さくらばさん jconsoleでも調べられるのですね。 情報ありがとうございます。 | ||||||||
|
投稿日時: 2006-11-08 09:27
-showversion オプションをつけるとバージョンを表示しつつプログラムの実行をしてくれます。
一応ヘルプ↓にも書いてあります。 > -showversion print product version and continue | ||||||||
|
投稿日時: 2006-11-08 09:51
実行中のプログラム内で、
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html#getProperties() の java.vm.name あたりを見ればよいのではないでしょうか。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2006-11-08 23:31
Windows 32bitのSun JDK1.5.0_09 のpublic JRE ですと、
次の2つのシステムプロパティに情報がありますね。 java.exe 実行 java.vm.name=Java HotSpot(TM) Client VM sun.management.compiler=HotSpot Client Compiler java.exe -server を実行 java.vm.name=Java HotSpot(TM) Server VM sun.management.compiler=HotSpot Server Compiler なので、自分はプログラム起動時にこれらの情報をログに出力してたりします。 |