Разница между сборщиками мусора G1GC и Shenandoah в JVM заключается в том, как они выполняют сборку мусора. 12
G1GC (Garbage first GC, «Мусор — первым») разработан для многопоточных приложений с крупным размером кучи (более 4 ГБ). 12 Он разделяет кучу на множество областей различного размера и выполняет глобальную маркировку объектов. 3 Определив, какие области наиболее пустые, G1GC сначала выполняет сборку мусора там, освобождая большой объём памяти. 3
Shenandoah (выпущен как часть JDK 12) выполняет большую часть цикла сборки мусора одновременно с потоками приложений. 12 Shenandoah может компактировать живые объекты, очищать мусор и освобождать оперативную память почти сразу после обнаружения свободной памяти. 1 Поскольку всё это происходит одновременно, без приостановки работы приложения, то Shenandoah более интенсивно нагружает процессор. 1
Таким образом, G1GC подходит для приложений, требующих баланса между паузами и пропускной способностью, а Shenandoah — для приложений с большими объёмами данных и требованиями к низкой задержке. 4