Вопрос по java – статическая переменная Java и процесс

9

Если я объявлю переменную static и скомпилирую этот класс в исполняемый файл jar. Если я начну этот класс, используя командный файл, как это:

<code>java MyClass
java MyClass
java MyClass
</code>

Будут ли все 3 процесса использовать одну и ту же переменную?

Каждый процесс имеет свое собственное пространство памяти. Это верно для любой программы и не относится только к Java. Одна из особенностей потоков, которая отличает их от процессов, заключается в том, что они разделяют пространство памяти по умолчанию. Кстати: процессы могут иметь общую память, однако поддержка Java для этого минимальна и используется редко. Peter Lawrey

Ваш Ответ

2   ответа
2

и, следовательно, ваши 3 процесса имеют три различных загрузчика классов и, следовательно, не будут совместно использовать переменные.

17

фактически - это специфично дляclass loader который загружает класс. Так что если вы создали три отдельных загрузчика классов, каждый из которых отвечает за загрузкуMyClass (не просто делегируя какому-либо общему родителю) каждый из них имеет отдельную независимую статическую переменную вMyClass.

@optimus: Конечно, каждый процесс имеет свое собственное пространство памяти, но он более детализирован, чем просто уровень для каждого процесса.
Вы имеете в виду, какой процесс имеет свое собственное пространство памяти? ilovetolearn

Похожие вопросы