[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jvm-kakie-sborshchiki-musora-sushchestvuyut-v-jvm":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},1213,"kakie-sborshchiki-musora-sushchestvuyut-v-jvm",38,"jvm","JVM","⚙️","Какие сборщики мусора существуют в JVM","Сборщик мусора (Garbage Collector, GC) — это компонент JVM, автоматически освобождающий память, занятую объектами, на которые больше нет ссылок. JVM предоставляет несколько реализаций GC, каждый из которых оптимизирован для конкретных сценариев.\n\n| Сборщик | Флаг | Описание | Когда использовать |\n|---|---|---|---|\n| Serial GC | `-XX:+UseSerialGC` | Однопоточный, stop-the-world | Маленькие приложения, \u003C100 MB heap, embedded |\n| Parallel GC | `-XX:+UseParallelGC` | Многопоточный, stop-the-world | Пакетная обработка, важна пропускная способность |\n| CMS | `-XX:+UseConcMarkSweepGC` | Concurrent Mark-Sweep, фоновая сборка | Deprecated (Java 9), удалён (Java 14) |\n| G1 GC | `-XX:+UseG1GC` | Region-based, баланс паузы\u002Fthroughput | По умолчанию с Java 9, heap > 4 GB |\n| ZGC | `-XX:+UseZGC` | Сверхнизкие паузы (\u003C1 мс), concurrent compaction | Большие heap (до 16 TB), low-latency |\n| Shenandoah | `-XX:+UseShenandoahGC` | Сверхнизкие паузы, concurrent compaction | Аналогично ZGC, доступен в OpenJDK |\n| Epsilon GC | `-XX:+UseEpsilonGC` | Не собирает мусор (no-op) | Тестирование, короткоживущие процессы |\n\n### Эволюция GC в Java\n\n- Java 8: по умолчанию Parallel GC\n- Java 9: по умолчанию G1 GC; CMS помечен как deprecated\n- Java 11: ZGC (экспериментальный); Epsilon GC\n- Java 12: Shenandoah (экспериментальный, в OpenJDK)\n- Java 14: CMS удалён\n- Java 15: ZGC и Shenandoah стали production-ready\n- Java 21: Generational ZGC (`-XX:+UseZGC -XX:+ZGenerational`), по умолчанию с Java 23\n\n### Выбор сборщика мусора\n\n```\nНужна максимальная пропускная способность?\n  -> Parallel GC\n\nНужны паузы \u003C 200 мс при heap 4-32 GB?\n  -> G1 GC\n\nНужны паузы \u003C 1 мс при любом размере heap?\n  -> ZGC или Shenandoah\n\nМаленькое приложение (\u003C 100 MB heap)?\n  -> Serial GC\n\nКороткоживущий процесс (не нужна GC)?\n  -> Epsilon GC\n```\n\n\u003Cdetails>\n\u003Csummary>Просмотр текущего GC\u003C\u002Fsummary>\n\n```bash\n# Узнать, какой GC используется\njava -XX:+PrintFlagsFinal -version 2>&1 | grep \"Use.*GC \"\n\n# Логирование GC (Java 9+)\njava -Xlog:gc*:file=gc.log:time,uptime,level,tags -jar app.jar\n```\n\n\u003C\u002Fdetails>\n\n### Частые ошибки\n\n- Использование CMS-флагов на Java 14+ — JVM не запустится\n- Выбор ZGC\u002FShenandoah для маленьких heap (\u003C 256 MB) — overhead слишком большой\n- Включение Parallel GC для low-latency систем — длинные stop-the-world паузы\n- Игнорирование GC-логов в production — без них невозможно диагностировать проблемы с памятью\n\n> **На собеседовании:** назовите основные GC (Serial, Parallel, G1, ZGC, Shenandoah), укажите, какой используется по умолчанию (G1 с Java 9), и объясните, когда какой выбирать. Частая ловушка — вопрос про CMS: он удалён с Java 14. Покажите понимание компромисса между пропускной способностью (Parallel) и латентностью (ZGC\u002FShenandoah).","","middle",[7,15,16,17],"memory","performance","gc",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":36,"featuredSnippetReady":37},"Какие сборщики мусора существуют в JVM — Gymterview","Обзор GC в JVM: Serial, Parallel, CMS, G1, ZGC, Shenandoah, Epsilon. Эволюция от Java 8 до Java 23. Как выбрать сборщик мусора для вашего приложения.","Сборщики мусора JVM: Serial, Parallel, G1, ZGC, Shenandoah — Gymterview","Все GC в JVM: от Serial до Generational ZGC. Сравнение, выбор по сценарию, эволюция от Java 8 до Java 23.",[26,27,28,29,30,31,32,33,8,34,35],"Garbage Collector","GC","Serial GC","Parallel GC","G1","ZGC","Shenandoah","Epsilon","сборщик мусора","собеседование","JVM предоставляет 7 сборщиков мусора: Serial (однопоточный, маленькие приложения), Parallel (максимальная пропускная способность), CMS (удалён в Java 14), G1 (по умолчанию с Java 9, баланс паузы\u002Fthroughput), ZGC (паузы \u003C1 мс, heap до 16 TB), Shenandoah (аналог ZGC, OpenJDK), Epsilon (no-op, тестирование). Generational ZGC стал стандартом для high-performance приложений с Java 23+.",true]