1) Java で記述された Web サービスがある場合、実行するには JVM インスタンスが必要です。では、JVM をデーモン プロセスにすることはできますか?
はい、できます。それがどのように行われるかは、O/S と Web サーバー コンテナー自体によって異なります。
2) はいの場合、他の Java アプリケーションを実行するときに、JVM のこのインスタンスを使用するか、新しいインスタンスを作成しますか?
いいえ。各 Java アプリケーションは独立した JVM を使用します。
各 JVM は個別のプロセスです。つまり、スタック、ヒープなどの共有はありません。(通常、共有される可能性があるのは、コア JVM のコードとネイティブ ライブラリを保持する読み取り専用セグメントだけです。通常のプロセスがコード セグメントを共有するのと同じ方法です。)
3) どのマシンでも使用可能なメイン メモリは一定です。初期ヒープサイズを指定せずに n 個の Java プロセスを同時に開始すると、ヒープサイズはプロセス間でどのように分散されますか?
サイズを指定しない場合にヒープの大きさを決定するメカニズムは、使用している JVM / プラットフォーム / バージョン、および "クライアント" モデルまたは "サーバー" モデル (Hotspot JVM の場合) のどちらを使用しているかによって異なります。ヒューリスティックでは、他の JVM の数やサイズは考慮されません。
参考: https ://stackoverflow.com/a/4667635/139985
実際には、ヒープ サイズを直接指定する方がよいでしょう。
4) n 個の JVM インスタンスを管理するプロセスはありますか、それとも OS 自体によって管理されますか?
ない。JVM インスタンスの数は、プロセスを開始できるさまざまなもののアクションによって決まります。たとえば、デーモン スクリプト、コマンド スクリプト、コマンド ラインでコマンドを入力するユーザーなどです。最終的に、OS がリソースを使い果たした場合、OS はそれ以上のプロセスの開始を拒否する可能性がありますが、JVM は他のプロセスと同じように扱われます。
5) GC 中にストップ・ザ・ワールドが発生すると、他の JVM インスタンス (私が想定する別のスレッド) が影響を受けますか?
いいえ。JVM は独立したプロセスです。それらは変更可能な状態を共有しません。ガベージ コレクションは、各 JVM で個別に動作します。