2010-11-29 15 views
6

この質問は、Java JVMについて非常に基本的なものかもしれません。私がJavaのスタンドアロン・プログラムを持っていて、例えばこのプログラムの5つのプロセスがサーバーの特定の時間に実行されている場合、5つのJavaプロセスが5つのJVMで実行されていると言えますか?JVMとJava Linuxプロセス

プロセスとは、ここではLinuxプロセスを意味します。 ps -ef |grep javaを実行すると、5つのJavaプロセスが表示されます。

+0

http://code.google.com/p/jvmtop/すべてのjvmsを表示 – MRalwasser

答えて

10

はい、正しいです。 javaプロセスごとに1つのJVMがあります。

+0

すべてのケースで実行されているJVMの数は、Javaプロセスの数と同じでもいいですか? – Gnanam

+2

あなたの質問に記載されているように、通常のLinuxセットアップで。プロセスごとに複数のJVMを試行する可能性があるソリューションがあります。例えば、[this(old)article](http://onjava.com/pub/a/onjava/2001/09/25/optimization.html)を参照してください。 –

0

JVMとネイティブライブラリによって異なります。個別のPIDを持つJVMスレッドがpsに表示されることがあります。一般的に言えば、子PIDはスレッドであるJavaプロセスを持つ親PIDを持ちます。

LinuxのJavaプロセスの数==インスタンス化されたJVMの数を確実に言うことはできません。

+1

Linuxでは、JVMは真のネイティブスレッドを使用しますが、これはプロセスと同様*です。しかし、プロセスだけが独自のアドレス空間を持っているので、それらは同じものではありません。 –

+0

@Matthew、もちろん、どちらもpsで見ることができます。 – Xailor

+0

私はあなたの最後の段落に対処しています。 psの出力にかかわらず、(プロセス数*はJVM数と等しい)と言うことができると思います。 –

4

jpsコマンド(パスにない場合はJDKのbinフォルダから)を実行して、マシン上で実行されているJavaプロセス(JVM)を調べることができます。

+0

+1。ありがとう、私は前にこのコマンドを知らなかった。 – Gnanam

+1

@Gnanam: 'jps'コマンドは別の状況で役に立ちます。 VisualVM( 'jvisualvm' comamndで起動)や' jhat'ユーティリティーのようなプロファイラのようなアプリケーションに渡すことができるjavaプロセスのプロセスIDを調べるために使用されます。 – CruiZen

+1

別のヒープ解析ツール['jhat'](http://download.oracle.com/javase/6/docs/technotes/tools/share/jhat.html)の存在を知らせてくれてありがとう。 – Gnanam

関連する問題