4

Javaプログラムを開始するときはいつでも:

java Herpyl.java -derp

これにより、別のJVMインスタンスが作成されますか、それとも同じJVMインスタンスの上に別のJavaプロセスが作成されますか?JVMと「Java」または「Javaプロセス」との関係について混乱しています。前もって感謝します!

4

2 に答える 2

7

各Java呼び出しは、独自のJVMを開始します。

プロセス間で1つのJVMを共有すると、セキュリティと安定性に問題があります。一方のプロセスがJVMを強制終了すると、もう一方のプロセスも強制終了し、もう一方のプロセスは、適切な権限がないと、もう一方のプロセスのデータを読み取ったり変更したりできなくなります( Javaプロセスから任意のJNIコードを呼び出すことができることを忘れないでください)。

メモリ消費が心配な場合:はい、それは確かにメモリを増やしますが、最近のOSはさまざまなdllやその他のものをマップします-私のwin7 x64マシンでは、アイドル状態のjavawプロセスには約300kbのプライベートワーキングセットがあります。

于 2012-04-28T02:22:21.207 に答える
2

Oracleのドキュメントによると:

JavaツールはJavaアプリケーションを起動します。これは、Javaランタイム環境を起動し、指定されたクラスをロードし、そのクラスのmainメソッドを呼び出すことによって行われます。

また、Javaランタイム環境には、Javaアプリケーションの実行に必要なJava仮想マシンおよびその他のコンポーネント(ライブラリなど)が含まれています。

于 2012-04-28T02:32:33.553 に答える