Sobes.tech
Назад к вопросам
Middle
3

Чем отличается стек от хипа (heap) в Java? Где хранятся строки?

Компании, где спрашивали
Лоция

Ответ от нейросети

sobes.tech AI

В Java стек и хип — это разные области памяти с разным назначением:

  • Стек (Stack) — это область памяти, где хранятся локальные переменные методов и вызовы функций. Каждый поток имеет свой стек. Доступ к данным в стеке очень быстрый, память выделяется и освобождается автоматически при входе и выходе из методов.

  • Хип (Heap) — это область памяти, где хранятся объекты и массивы, созданные с помощью оператора new. Память в хипе управляется сборщиком мусора (Garbage Collector).

Где хранятся строки?

Строки в Java — это объекты класса String, поэтому они хранятся в хипе. При этом существует специальный пул строк (String Pool), где хранятся строковые литералы для оптимизации памяти. Этот пул тоже находится в области памяти, связанной с хипом (в современных JVM пул строк — часть хипа).

Пример:

String s1 = "hello"; // строковый литерал, хранится в пуле строк
String s2 = new String("hello"); // новый объект в хипе