Javaでは、静的変数のインスタンスは1つしかなく、値は同じ環境内のすべてのスレッド間で共有されます.しかし、私の質問は、アプリケーションがクラスターにデプロイされた場合、アプリケーションにアクセスして変更された場合、値は同じままですか?クラスタの異なるインスタンスによって?
それとも、クラスターのインスタンスごとに変化し、同じままですか?
Javaでは、静的変数のインスタンスは1つしかなく、値は同じ環境内のすべてのスレッド間で共有されます.しかし、私の質問は、アプリケーションがクラスターにデプロイされた場合、アプリケーションにアクセスして変更された場合、値は同じままですか?クラスタの異なるインスタンスによって?
それとも、クラスターのインスタンスごとに変化し、同じままですか?
複数の JVM がメモリを共有しているかどうかを尋ねている場合は、いいえ、そうではありません。
各 JVM は、クラスとその静的フィールドの独自のコピーを取得します。
クラスターで実行されている JVM の各インスタンスについても同じです。JVM を実行している別のインスタンスには別のインスタンスがあります。より正確には、同じ JVM 内に複数のクラスローダーが存在する可能性があるため、それぞれに独自のインスタンスがあります。
クラスターの定義がわかりません。ただし、異なる JVM が一緒に動作することを意味する場合、静的変数は JVM ごとに 1 つです。
たとえば、
クラスターに 10 個の JVM がある場合、静的変数の 10 個のインスタンスがあり、それぞれが互いに独立しています。