Я хочу знать, где статические переменные хранятся в Java.
Есть уже несколько вопросов по SO, как: where is a static method and a static variable stored in java. In heap or in stack memoryГде хранятся статические переменные в java?
по ссылке говорится, что статические переменные хранятся в куче.
Но следующая собственная выдержка из книги Билла Veners («Внутри виртуальной машины Java»):
Метода Область
Внутри экземпляра виртуальной машины Java, информация о загруженных типах хранятся в логической области памяти , называемой областью метода. Когда виртуальная машина Java загружает тип, он использует загрузчик классов для , чтобы найти соответствующий файл класса. Класс загрузчик читает в файле класса - линейный поток двоичных данных - и передает его на виртуальную машину. Виртуальная машина извлекает информацию о типе из двоичных данных и сохраняет информацию в области метода. Память для классных (статических) переменных, объявленных в , класс также берется из области метода.
В нем четко указано, что при загрузке класса статические переменные сохраняются в области метода. Насколько я знаю, область метода отличается от кучи. Таким образом, книга противоречит предоставленной SO-ссылке.
Может кто-то прояснить путаницу?
[Область метод является логически частью кучи.] (Https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html # jvms-2.5.4) – EJP
Спасибо Siguza за форматирование. Кстати, как получить индивидуальный идентификатор? – Mandroid
@EJP Это должен быть ответ. – Siguza