Какие переменные инициализируются в Heap в JVM

«Какие переменные инициализируются в Heap в JVM» — вопрос из категории Управление памятью, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Heap (куче) JVM хранятся объекты и их поля, включая:

  • Объекты (экземпляры классов) – создаются через new
  • Массивы – включая примитивные (int[]) и объектные (String[])
  • Нестатические поля объектов (примитивы и ссылки)
  • Строки (String) – кроме строковых литералов, которые могут быть в пуле строк (String Pool)

Пример:

class User {
    String name;  // поле (Heap)
    int age;      // примитив внутри объекта (Heap)
}

User user = new User();  // объект в Heap
int[] numbers = new int[10];  // массив в Heap

Локальные переменные (в методах) и примитивы хранятся в стеке (Stack).