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

Как устроена память в JVM

JVM память разделена на несколько областей:

  1. Heap (куча) - хранит объекты и массивы. Делится на:

    • Young Generation (Eden + Survivor spaces)
    • Old Generation (Tenured space)
  2. Stack (стек) - хранит локальные переменные и вызовы методов (по одному стеку на поток)

  1. Metaspace (ранее PermGen) - хранит метаданные классов (с Java 8)

  2. Native Memory - используется JVM для внутренних нужд

Пример работы с кучей:

java
Object obj = new Object(); // создается в куче
String str = "Hello"; // строка в пуле строк (часть кучи)

Ключевые особенности:

  • Сборка мусора работает преимущественно в куче
  • Stack работает по принципу LIFO
  • Metaspace динамически расширяется в пределах доступной памяти
  • OutOfMemoryError возникает при переполнении кучи, StackOverflowError - при переполнении стека
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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