Молодое поколение разделено на три региона: пространство Эдема и два пространства выживших. Большинство объектов (исключение составляют очень большие объекты) размещаются в пространстве Eden с использованием простого (и быстрого) метода столкновения указателей. Когда указатель достигает конца пространства Eden, должен произойти второстепенный сборщик мусора. Вместо того, чтобы сразу продвигать все объекты в старое поколение, им разрешают некоторое время находиться в пространстве для выживших, чтобы они дольше становились мусором и снижали нагрузку на коллекцию старого поколения.
Есть два места для выживших; один - это пространство «от» (в настоящее время содержит объекты), а другой - пространство «на» (фактически пустое). Живые данные из Eden копируются в пространство «to», а также любые объекты, которые еще живы и не достигли нового порога в пространстве «from». Роли двух оставшихся в живых пространств затем меняются местами («до» становится «из», «от» становится «до») и готовятся к следующему второстепенному ГК.
Объекты в пространстве выживших, которые достигли нового (часто называемого владением) порога, переводятся в старое поколение.
Ясно, что если ваше приложение распределяет объекты со скоростью, превышающей скорость, которую могут выдержать пространства выживших, GC будет продвигать объекты быстрее. На это влияет параметр MaxTenuringThreshold, который является максимальным, а не определенным значением.
Вы можете настроить размер регионов с помощью различных параметров. Прочитайте это для более подробной информации:
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/sizing.html