Javaプログラムを開始するときはいつでも:
java Herpyl.java -derp
これにより、別のJVMインスタンスが作成されますか、それとも同じJVMインスタンスの上に別のJavaプロセスが作成されますか?JVMと「Java」または「Javaプロセス」との関係について混乱しています。前もって感謝します!
各Java呼び出しは、独自のJVMを開始します。
プロセス間で1つのJVMを共有すると、セキュリティと安定性に問題があります。一方のプロセスがJVMを強制終了すると、もう一方のプロセスも強制終了し、もう一方のプロセスは、適切な権限がないと、もう一方のプロセスのデータを読み取ったり変更したりできなくなります( Javaプロセスから任意のJNIコードを呼び出すことができることを忘れないでください)。
メモリ消費が心配な場合:はい、それは確かにメモリを増やしますが、最近のOSはさまざまなdllやその他のものをマップします-私のwin7 x64マシンでは、アイドル状態のjavawプロセスには約300kbのプライベートワーキングセットがあります。
Oracleのドキュメントによると:
JavaツールはJavaアプリケーションを起動します。これは、Javaランタイム環境を起動し、指定されたクラスをロードし、そのクラスのmainメソッドを呼び出すことによって行われます。
また、Javaランタイム環境には、Javaアプリケーションの実行に必要なJava仮想マシンおよびその他のコンポーネント(ライブラリなど)が含まれています。