[解決済み] 同一マシン上で複数のjavaプログラムを実行する場合
質問
各Javaアプリケーションは、特定のJava仮想マシンインスタンスで実行されます。 私は本当に以下の側面で混乱している、グーグル検索はさらに私を混乱させている。異なるサイト上の異なる記事。
-
もし私がJavaで書かれたWebサービスを持っているならば、それは実行するためにJVMインスタンスを必要とします。
-
もしそうなら、他のJavaアプリケーションを実行するとき、それはJVMのこのインスタンスを使用するか、または新しいものを作成するのでしょうか?
-
どのマシンでも利用可能なメインメモリは一定です。初期ヒープサイズを与えずにn個のjavaプロセスを同時に起動した場合、ヒープサイズはどのようにプロセス間で分配されるか?
-
n個のJVMインスタンスを管理するプロセスはありますか、それともOS自身が管理するのでしょうか?
-
GC中にstop-the-worldが発生した場合、他のJVMインスタンス(異なるスレッドと思われます)は影響を受けますか?
どのように解決するのですか?
<ブロッククオート1) Javaで書かれたWebサービスがある場合、それを実行するためにJVMインスタンスが必要です。そこで、JVMをデーモンプロセスにすることができますか?
はい、できます。 それがどのように行われるかは、O/SとWebサーバーコンテナ自体に依存します。
2) もしイエスなら、他のJavaアプリケーションを実行するとき、それはJVMのこのインスタンスを使用するか、または新しいものを作成しますか?
いいえ。各Javaアプリケーションは、独立したJVMを使用します。
各JVMは独立したプロセスであり、それはスタック、ヒープ、その他を共有しないことを意味します。 (一般的に、共有されるかもしれない唯一のものは、コア JVM およびネイティブ ライブラリのコードを保持する読み取り専用セグメントです...通常のプロセスがコード セグメントを共有するかもしれないのと同じ方法で)。
3) どのマシンでも利用可能なメインメモリは一定です。任意の初期ヒープ サイズを提供せずに n 個の Java プロセスを同時に開始する場合、ヒープ サイズはどのようにプロセス間で分配されますか?
サイズを指定しない場合、ヒープの大きさを決定するメカニズムは、使用している JVM/プラットフォーム/バージョンに依存し、また、(Hotspot JVM のための) "client" または "server" モデルを使用しているかどうかにも依存します。 ヒューリスティックは、他のJVMの数またはサイズを考慮に入れていません。
参考にしてください。 https://stackoverflow.com/a/4667635/139985
実際には、ヒープサイズを直接指定する方がよいでしょう。
4) JVMインスタンスのn個を管理するプロセスはありますか、それともOS自身が管理するのでしょうか?
どちらでもありません。 JVMインスタンスの数は、プロセスを開始することができる様々なものの動作によって決定されます。例えば、デーモンスクリプト、コマンドスクリプト、コマンドラインでコマンドをタイプするユーザー、等々です。 最終的に、OSは、リソースが不足した場合、それ以上のプロセスの開始を拒否することができますが、JVMは他のプロセスと異なって扱われることはありません。
5) GC中にstop-the-worldが起こったとき、他のJVMインスタンス(異なるスレッドを想定)は影響を受けるのでしょうか?
いいえ。JVMは独立したプロセスです。 それらは、いかなる変更可能な状態も共有しません。 ガベージコレクションは、各JVM上で独立して動作します。
関連
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] java.lang.OutOfMemoryError" の対処法。Java heap space "エラーの対処方法を教えてください。
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
Java の switch case 文で必要な定数式の問題の解決法
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
無効なメソッド宣言
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
java send https request prompt java.security.cert.について。
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。