Ответ
В 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).