Встречается на собеседованиях • сегодня

Зачем объекты перемещаются между отсеками Heap в JVM

Объекты перемещаются между отсеками кучи (Eden, Survivor, Old Gen) для эффективного управления памятью и уменьшения фрагментации.

  1. Eden → Survivor: Новые объекты создаются в Eden. После мажорного GC выжившие объекты перемещаются в Survivor (S0/S1).
  2. Survivor → Survivor: При каждом GC объекты копируются между S0 и S1, увеличивая их возраст.
  3. Survivor → Old Gen: Если возраст объекта достигает порога (по умолчанию 15), он перемещается в Old Gen.

Пример:

java
// Объект сначала в Eden, затем может попасть в Old Gen
Object obj = new Object(); // Eden
for (int i = 0; i < 20; i++) {
    obj = new Object(); // Вызовет GC, выжившие объекты перейдут в Survivor/Old Gen
}

Зачем:

  • Уменьшает паузы GC, т.к. сборка мусора в Young Gen быстрее.
  • Изолирует долгоживущие объекты в Old Gen, уменьшая частоту их обработки.
  • Оптимизирует использование памяти через копирование между Survivor.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы