Где хранится примитивное поле класса в JVM: в Heap или Stack?

«Где хранится примитивное поле класса в JVM: в Heap или Stack?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Примитивное поле класса хранится в Heap.

Объяснение: Поле класса (нестатическое) является частью состояния объекта. Поскольку все объекты размещаются в куче (Heap), их поля, включая примитивные, также хранятся там.

Сравнение с локальными переменными:

class MemoryLocationDemo {
    int instanceField = 100; // Хранится в HEAP (внутри объекта).

    void someMethod() {
        int localVar = 200;  // Хранится в STACK (внутри фрейма метода).
    }
}

Краткое правило:

  • Heap: Все поля объекта (примитивные и ссылочные).
  • Stack: Локальные переменные и параметры методов (примитивы и ссылки).

Примитивы внутри объектов никогда не хранятся в стеке. Стек используется только для временных данных выполнения методов.