Вопрос проверяет знание внутреннего устройства JVM и распределения памяти.
JVM делит память на несколько логических областей.
Часть из них принадлежит каждому потоку, часть — всей JVM.
Каждая область отвечает за свой тип данных.
Это помогает эффективно управлять памятью и потоками.
JVM использует четкое разделение памяти для разных задач.
Память JVM разделена на области с разным назначением и временем жизни данных.
Ключевые области:
Heap
Хранит объекты
Общая для всех потоков
Stack
Хранит вызовы методов и локальные переменные
У каждого потока свой
Metaspace
Хранит метаданные классов
Загружается при старте и во время работы
Program Counter (PC)
Указывает текущую выполняемую инструкцию
У каждого потока свой
Native Method Stack
Используется для native-методов
Важно различать:
Потоковые области
Stack
PC
Общие области
Heap
Metaspace
JVM использует несколько областей памяти с разными ролями.
Понимание этих областей помогает разбираться в утечках и проблемах производительности.