В Java память управляется автоматически сборщиком мусора и делится на несколько областей:
Heap (Куча):
Stack (Стек):
Method Area (Область методов) / PermGen (до Java 8) / Metaspace (начиная с Java 8):
Native Method Stacks (Стек нативных методов):
java
Области памяти и их содержимое:
| Область | Где находится? | Что хранит? | Управление |
|---|---|---|---|
| Heap | Общая для JVM | Объекты, массивы | Garbage Collector |
| Stack | Своя для каждого потока | Локальные примитивы, ссылки на объекты | Автоматическое (при завершении метода) |
| Method Area | Общая для JVM | Метаданные классов, статические переменные, байт-код, константы | Garbage Collector (для классов и статики) |
| Native Stacks | Своя для каждого потока (при вызове) | Переменные и данные нативных методов | Автоматическое (при завершении нативного метода) |