Найти тему
IamAndroidDev

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

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

  1. Stack (стек) - здесь хранятся все локальные переменные и параметры методов. При вызове метода создается новый фрейм в стеке, который хранит параметры метода, локальные переменные и ссылки на объекты в heap.
  2. Heap (куча) - здесь хранятся все объекты Java и массивы. При создании объекта Java выделяется место в куче и возвращается ссылка на объект. Объекты Java удаляются из памяти автоматически сборщиком мусора, когда на них больше не остается ссылок.
  3. Method Area (область методов) - здесь хранится информация о классах, методах и других метаданных. Эта область разделяется между всеми потоками, и каждый класс загружается в Method Area только один раз.
  4. Constant Pool (константный пул) - здесь хранятся все литералы, такие как числа, строки и ссылки на классы.

В памяти Java также есть нативные методы и статические переменные, которые хранятся в области памяти, называемой Native Heap.