Выбор ответа Middle JVM: память, GC, загрузка классов обновлено

Зачем поколения

Вопрос

На чём основано деление кучи на молодое и старое поколение?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Большинство объектов умирает рано, и молодых дёшево собирать часто. Слабая гипотеза поколений: большинство объектов короткоживущие.

Варианты ответа

  1. Старые объекты занимают больше памяти, поэтому их держат отдельно
  2. Молодое поколение хранит объекты одного потока, а старое общие для всех
  3. Так сборщику проще находить циклические ссылки между объектами
  4. Большинство объектов умирает рано, и молодых дёшево собирать частоправильный ответ

Разбор

Слабая гипотеза поколений: большинство объектов короткоживущие. Сборка молодого поколения копирует только выживших, её цена пропорциональна живым, поэтому она быстрая. Размер объекта и принадлежность потоку тут ни при чём (TLAB это про выделение памяти, а не про поколения). Циклы GC обрабатывает обходом от корней в любом поколении.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме