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

Как распределяется память между потоками в JVM

В JVM память делится на общие и приватные области:

  1. Общая память (Heap) - доступна всем потокам:

    • Heap (куча) - хранит объекты
    • Metaspace (раньше PermGen) - метаданные классов
  2. Приватная память (Thread Stack) - у каждого потока свой стек:

    • Хранит локальные переменные, вызовы методов
    • Размер по умолчанию зависит от ОС (обычно 1MB)
    • Можно настроить через -Xss

Пример:

java
public class MemoryExample {
    public static void main(String[] args) {
        // Объект в куче (общая память)
        Object sharedObj = new Object(); 
        
        new Thread(() -> {
            // Локальная переменная в стеке потока
            int localVar = 42; 
            System.out.println(sharedObj + " " + localVar);
        }).start();
    }
}

Важно: при работе с общей памятью нужна синхронизация, так как потоки могут одновременно изменять данные в куче.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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