Ответ
В JVM память очищается сборщиком мусора (Garbage Collector, GC). Он автоматически освобождает память от объектов, которые больше не используются (недостижимы из корневых точек). Основные алгоритмы GC:
- Mark-Sweep – помечает используемые объекты, затем удаляет неотмеченные.
- Generational GC – делит объекты на поколения (Young, Old) и применяет разные стратегии.
Пример:
void example() {
Object obj = new Object(); // Создаем объект
obj = null; // Делаем его недостижимым
// GC может освободить память
}
Нюансы:
- GC не гарантирует немедленное удаление.
System.gc()лишь предлагает JVM выполнить сборку.- Утечки памяти возможны, если объекты ошибочно остаются достижимыми (например, через статические коллекции).