Что очищает память в JVM

«Что очищает память в JVM» — вопрос из категории Управление памятью, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JVM память очищается сборщиком мусора (Garbage Collector, GC). Он автоматически освобождает память от объектов, которые больше не используются (недостижимы из корневых точек). Основные алгоритмы GC:

  1. Mark-Sweep – помечает используемые объекты, затем удаляет неотмеченные.
  2. Generational GC – делит объекты на поколения (Young, Old) и применяет разные стратегии.

Пример:

void example() {
    Object obj = new Object(); // Создаем объект
    obj = null; // Делаем его недостижимым
    // GC может освободить память
}

Нюансы:

  • GC не гарантирует немедленное удаление.
  • System.gc() лишь предлагает JVM выполнить сборку.
  • Утечки памяти возможны, если объекты ошибочно остаются достижимыми (например, через статические коллекции).