Выбор ответа Senior Память и сборка мусора обновлено

Зачем V8 делит кучу на поколения

Вопрос

Почему V8 разделяет кучу на молодое и старое поколение?

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

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

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

Коротко

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

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

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

Разбор

Гипотеза поколений: большинство объектов умирает вскоре после создания. Поэтому новые объекты кладут в небольшую молодую область и часто чистят её быстрым копирующим сборщиком; пережившие пару сборок переезжают в старое поколение, которое собирается реже и дольше. Примитивы тут ни при чём: в куче лежат и строки, и числа-объекты. Старое поколение тоже очищается, mark-sweep-compact. На размер отдельного объекта разделение не влияет.

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

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