2016-10-11 12 views
0

私は、単一のマシンで複数のJavaプログラムを実行すると、複数のインスタンスが作成される理由を教えていただけますか?なぜすべてのプログラムが単一のjvmを共有できないのですか?また、javaライブラリはすべてのjvmインスタンスに個別にロードされますか?なぜ複数のjvmインスタンスが作成されるのですか?

+1

ここにいくつかの理由があります.JVMを共有しないでください。http://stackoverflow.com/questions/13539132/why-have-one-jvm-per-application –

+0

"なぜすべてのプログラムが単一のjvmを共有できないのですか?彼らは*できないと言った? – the8472

答えて

0

JVMを強制終了すると、すべてのJavaプログラムをクラッシュさせたくないからです。 はい、Javaライブラリは別途ロードされます。しかし、Javaプログラムは、どのライブラリを "import"キーワードでロードするかをJVMに指示します。

+0

つまり、2つのjvmが同じクラスをメモリにロードしている場合、そのクラスオブジェクトにアクセスする際に競合が発生する可能性があるため、jvmはメモリ内の共通ライブラリをどのようにロードするのですか? –

1

理論上、1つのjvmは複数のJavaアプリケーションのホストになることができますが、実際には多くの干渉があります。ドキュメントに基づい

JVMはSystem.in/out/errの一組、そうでつのデフォルトエンコーディング一のデフォルトロケール、システムプロパティの一組、およびを有しています。 1つのアプリケーションがこれらを変更すると、すべてのアプリケーションに影響します。 System.exit()を呼び出すアプリケーションは、すべてのアプリケーションを強制終了します。 1つのアプリケーションスレッドがワイルドになり、あまりに多くのCPUまたはメモリを消費すると、他のアプリケーションにも影響します。

1

複数のインスタンスが作成されます。なぜ我々は、単一のマシンで複数のJavaプログラムを実行する場合、誰が私に教えていただけますか?

任意のプログラムを複数回実行すると、そのプログラムの複数のインスタンスが作成されます。これはJava独自のものではありません。

すべてのプログラムが単一のJVMを共有することはできませんなぜ

あなたのプログラムは、単一のJVMを共有しなければならない、しかし、これはあなたが唯一のJVMを起動し、実行するアプリケーションにそれを伝えるべきであることを意味します。あなたがこれをしたいのかどうかは別の質問です。アプリケーションを共有すると複雑さが増し、実際には単一のモノリスを複数のマイクロサービスに変える傾向があります。

JVMを結合するのではなく、分割する理由はいくつかあります。

  • 標準のガベージコレクタの休止時間は、使用されるヒープのサイズとともに増加します。アプリケーションを分割することは、より多くの小さな休止を意味します。
  • 簡単な作業負荷のためにガベージコレクションをチューニングする方が簡単です。仕事量が混在している場合は、大きな幼い宇宙ともう1つの小さな宇宙が必要です。作業量が多ければ多いほど、JVMを調整するのが難しくなります。
  • アプリケーションでリソースリークが発生した場合は、これを解決する唯一の方法はJVMを再起動することです。各アプリケーションが独自のJVMに含まれている場合は、他のアプリケーションを停止する必要はありません。
  • JVMを停止する(メモリをいっぱいにする、JVMをクラッシュする、または使用不可能な状態にする)コードがある可能性があります。複数のJVMがこのような障害の影響を制限します。
  • は、メンテナンス性を向上させる主要コンポーネント間の明確な分離を強制します。これはモノリスで行うことができますが、弟子が必要です。

そして、javaライブラリはすべてのjvmインスタンスに別々にロードされますか?

JVMメモリは、JARをメモリにマップします.JVMは、JVMではなくOSであり、プロセス間でJARを共有するかどうかを決定します。

しかし、クラスを必要とする各JVMはそれをロードし、静的フィールドのコピーを設定します。私は、メモリのJVMの負荷の共通ライブラリをどうするかと言うことを意味

メモリ内の2つのJVMの負荷同じクラスならば、競合があるかもしれませんので、そのクラスのオブジェクトに

にアクセスしながら各プロセスは、それが自分のメモリ空間のしています。 2つのJVMが同じクラスをロードする場合、これらの2つのコピーは互いに相互作用しないため、競合する機会はありません。

+0

簡単な説明に感謝します。 –

関連する問題