この質問は、Java JVMについて非常に基本的なものかもしれません。私がJavaのスタンドアロン・プログラムを持っていて、例えばこのプログラムの5つのプロセスがサーバーの特定の時間に実行されている場合、5つのJavaプロセスが5つのJVMで実行されていると言えますか?JVMとJava Linuxプロセス
プロセスとは、ここではLinuxプロセスを意味します。 ps -ef |grep java
を実行すると、5つのJavaプロセスが表示されます。
この質問は、Java JVMについて非常に基本的なものかもしれません。私がJavaのスタンドアロン・プログラムを持っていて、例えばこのプログラムの5つのプロセスがサーバーの特定の時間に実行されている場合、5つのJavaプロセスが5つのJVMで実行されていると言えますか?JVMとJava Linuxプロセス
プロセスとは、ここではLinuxプロセスを意味します。 ps -ef |grep java
を実行すると、5つのJavaプロセスが表示されます。
はい、正しいです。 java
プロセスごとに1つのJVMがあります。
すべてのケースで実行されているJVMの数は、Javaプロセスの数と同じでもいいですか? – Gnanam
あなたの質問に記載されているように、通常のLinuxセットアップで。プロセスごとに複数のJVMを試行する可能性があるソリューションがあります。例えば、[this(old)article](http://onjava.com/pub/a/onjava/2001/09/25/optimization.html)を参照してください。 –
JVMとネイティブライブラリによって異なります。個別のPIDを持つJVMスレッドがps
に表示されることがあります。一般的に言えば、子PIDはスレッドであるJavaプロセスを持つ親PIDを持ちます。
LinuxのJavaプロセスの数==インスタンス化されたJVMの数を確実に言うことはできません。
Linuxでは、JVMは真のネイティブスレッドを使用しますが、これはプロセスと同様*です。しかし、プロセスだけが独自のアドレス空間を持っているので、それらは同じものではありません。 –
@Matthew、もちろん、どちらもpsで見ることができます。 – Xailor
私はあなたの最後の段落に対処しています。 psの出力にかかわらず、(プロセス数*はJVM数と等しい)と言うことができると思います。 –
jps
コマンド(パスにない場合はJDKのbinフォルダから)を実行して、マシン上で実行されているJavaプロセス(JVM)を調べることができます。
+1。ありがとう、私は前にこのコマンドを知らなかった。 – Gnanam
@Gnanam: 'jps'コマンドは別の状況で役に立ちます。 VisualVM( 'jvisualvm' comamndで起動)や' jhat'ユーティリティーのようなプロファイラのようなアプリケーションに渡すことができるjavaプロセスのプロセスIDを調べるために使用されます。 – CruiZen
別のヒープ解析ツール['jhat'](http://download.oracle.com/javase/6/docs/technotes/tools/share/jhat.html)の存在を知らせてくれてありがとう。 – Gnanam
http://code.google.com/p/jvmtop/すべてのjvmsを表示 – MRalwasser