Ответ
В куче (Heap) хранятся все объекты, созданные с помощью оператора new, а также их поля (кроме примитивов в составе объекта). Сюда попадают:
- Объекты классов (экземпляры)
- Массивы
- Коллекции (ArrayList, HashMap и т.д.)
- Строки (String)
- Ссылочные типы данных
Пример:
// Хранится в куче
String text = new String("Hello");
List<Integer> numbers = new ArrayList<>();
int[] array = new int[10];
Примитивные типы (int, boolean и т.д.) хранятся в стеке, если они локальные переменные, или внутри объекта в куче, если являются его полями.