Какие данные хранятся в куче (heap) памяти Java?

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

Ответ

В куче (heap) хранятся все объекты и массивы, созданные во время выполнения программы с помощью оператора new.

Пример размещения в куче:

MyClass obj = new MyClass(); // Экземпляр объекта MyClass — в куче.
int[] numbers = new int[100]; // Массив из 100 целых чисел — в куче.
String text = "Hello";       // Объект строки из пула строк — в куче.

Ключевые принципы:

  • Примитивные типы (int, char, boolean и т.д.), объявленные как локальные переменные, хранятся в стеке.
  • Ссылки на объекты (переменные obj, numbers, text) также хранятся в стеке, но сами объекты, на которые они указывают, — всегда в куче.
  • Куча является общей областью памяти для всех потоков приложения и управляется сборщиком мусора (Garbage Collector, GC), который автоматически освобождает память от неиспользуемых объектов.