Java 10 — расширенная сборка мусора
JEP 304 — Интерфейс сборщика мусора
До Java 10 компоненты реализации GC (сборщика мусора) были разбросаны по кодовой базе и не могли быть легко заменены. В Java 10 представлен интерфейс Garbage-Collector, позволяющий подключать альтернативные реализации сборщика мусора. Это также помогает изолировать кодовую базу от различных реализаций сборки мусора. Эта функция является частью JEP 304.
JEP 307 — Параллельная полная сборка мусора для G1
В Java 9 появился сборщик мусора G1 (Garbage First). G1 избегает полной сборки мусора, но в случае параллельных потоков поиск коллекции и память не восстанавливаются достаточно быстро, что влияет на работу пользователя. С Java 10 теперь G1 будет использовать полную сборку мусора.
С этим изменением G1 уменьшает задержку в наихудшем случае за счет параллельного использования полного GC. В настоящее время G1 использует однопоточный алгоритм маркировки-развертки-компактности. В JEP 307 параллельный поток запустит алгоритм маркировки-развертки-уплотнения. Количество потоков можно контролировать с помощью следующей опции.
$java -XX:ParallelGCThreads=4
java