TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1557 2.24K
Сборка мусора в JVM — всё, что нужно знать

1. Сборка мусора (GC) → Автоматическая очистка памяти

🔸JVM автоматически освобождает память от недостижимых объектов.
🔸Используется для избегания ручного управления памятью (например, неиспользуемые объекты List очищаются автоматически).

2. Heap → Основная область памяти для объектов

🔸Здесь хранятся все объекты Java.
🔸Делится на области: Young, Old и иногда Metaspace.

3. Молодое поколение (Young Generation) → Новые объекты (краткоживущие)

🔸Большинство новых объектов создаются здесь.
🔸Пример использования: String s = "abc" сначала попадает в эту область.

4. Старое поколение (Old Generation / Tenured) → Долгоживущие объекты

🔸Объекты, пережившие несколько сборок мусора, перемещаются сюда.
🔸Пример использования: кэшированные конфигурации, бины, живущие на протяжении всей жизни приложения.

5. Metaspace → Хранение метаданных классов (начиная с Java 8+)

🔸Заменяет PermGen.
🔸Хранит структуру классов, информацию о методах (например, User.class, List.class).

6. Minor GC → Очистка молодого поколения

🔸Быстрая и частая.
🔸Срабатывает, когда заполняется пространство Eden (например, при множестве краткоживущих запросов).

7. Major (Full) GC → Очистка старого поколения и Metaspace

🔸Медленнее и реже.
🔸Срабатывает, когда почти заполнено старое поколение (например, при больших графах объектов или утечках памяти).

8. Stop-the-World (STW) → Приостановка приложения во время GC

🔸JVM замораживает все потоки на время GC.
🔸Может вызывать задержки (например, при большой полной сборке мусора).

9. GC Roots → Точки отсчета для достижимости объектов

🔸Включает ссылки из регистров, стэков потоков, загрузчиков классов.
🔸GC отслеживает от них «живые» объекты (например, локальные переменные в методе main()).

Основные типы сборщиков мусора

10. Serial GC → Однопоточный сборщик

🔸Простой, но останавливает всё приложение.
🔸Используется для малых heaps (например, CLI-инструменты или тестовые приложения).

11. Parallel GC → Многопоточный сборщик

🔸Ускоряет GC за счёт многопоточности.
🔸Используется в приложениях с приоритетом на производительность (например, batch-задачи, нагруженные серверы).

12. CMS (Concurrent Mark Sweep) → Сборщик с низкими паузами (УСТАРЕЛ)

🔸Работает в фоновом режиме с короткими паузами.
🔸Использовался в приложениях, чувствительных к задержкам (например, веб-серверы).

13. G1 GC → Сбалансированный сборщик с низкими паузами (по умолчанию с Java 9+)

🔸Делит heap на регионы; работает параллельно и конкурентно.
🔸Отличный универсальный сборщик (например, для микросервисов, real-time API).

14. ZGC → Сборщик с ультранизкими паузами

🔸Разработан для пауз в пределах миллисекунды.
🔸Используется в системах реального времени с большим heap (например, финтех, игры).

15. Shenandoah → Сборщик с низкими паузами (RedHat/OpenJDK)

🔸Конкурирует с ZGC.
🔸Применяется в больших heaps с постоянными требованиями к задержкам.

👉 Java Portal
  • 👍 7
  • ❤ 6
More from @java_iibrary
  1. Oct 1, 2026Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health…
  2. Sep 30, 2026Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпил…
  3. Sep 30, 2026Docker прост, пока всё работает. Но что делать, если контейнер постоянно перезапускается,…
  4. Sep 29, 2026Эволюция языков программирования 1940-е → Машинный код ⬇️ 1950-е → Ассемблер ⬇️ 1960-е → F…
  5. Sep 29, 2026Большинство Java-разработчиков используют эти термины каждый день. Удивительно, но многие…
  6. Sep 28, 2026💡 Java: не создавайте ресурсоёмкие объекты, пока они действительно не понадобятся. ✅ Иниц…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →