В Java, что указывает на то, что объект будет храниться в куче (heap)?

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

Ответ

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

Почему? Куча используется для динамического выделения памяти, время жизни которой управляется сборщиком мусора (GC). Это позволяет объектам существовать дольше, чем метод, в котором они были созданы.

Примеры:

// Явное создание объекта String в куче
String str1 = new String("Hello");

// Создание массива (тоже объект) в куче
int[] numbers = new int[10];

// Создание экземпляра пользовательского класса в куче
MyClass obj = new MyClass();

Важно: Даже строковые литералы (например, String str2 = "Hello";) хранятся в куче, в специальной области — пуле строк (String Pool). Примитивные типы (int, char), если они не являются полями объекта, хранятся в стеке (stack).