Ответ
В куче (heap) хранятся все объекты, созданные с помощью new, а также массивы. Сюда попадают:
- Объекты классов (экземпляры)
- Массивы (включая массивы примитивов)
- Данные, связанные с объектами (поля, ссылки)
Примитивы (int, boolean и т.д.) хранятся в стеке, если они локальные переменные, или в куче как часть объекта.
Пример:
// В куче
Object obj = new Object();
int[] numbers = new int[10];
// В стеке (если локальная переменная)
int count = 5;
Сборщик мусора автоматически освобождает память кучи, когда объекты больше не используются.