Выбор ответа Middle JVM: память, GC, загрузка классов обновлено
Зачем поколения
Вопрос
На чём основано деление кучи на молодое и старое поколение?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Большинство объектов умирает рано, и молодых дёшево собирать часто. Слабая гипотеза поколений: большинство объектов короткоживущие.
Варианты ответа
- Старые объекты занимают больше памяти, поэтому их держат отдельно
- Молодое поколение хранит объекты одного потока, а старое общие для всех
- Так сборщику проще находить циклические ссылки между объектами
- Большинство объектов умирает рано, и молодых дёшево собирать частоправильный ответ
Разбор
Слабая гипотеза поколений: большинство объектов короткоживущие. Сборка молодого поколения копирует только выживших, её цена пропорциональна живым, поэтому она быстрая. Размер объекта и принадлежность потоку тут ни при чём (TLAB это про выделение памяти, а не про поколения). Циклы GC обрабатывает обходом от корней в любом поколении.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «JVM: память, GC, загрузка классов»
- Делегирование загрузчиков
- JVM в контейнере
- Сборщик по умолчанию
- Escape analysis
- Этапы загрузки класса
- GC roots
- Области памяти JVM
- Виды ссылок