Управление памятью Java: понимание стека и кучи

В Java стек и куча — это две отдельные области памяти, используемые для разных целей.

  1. Стек:
    Стек — это область памяти, используемая для хранения фреймов методов и локальных переменных. Каждый раз при вызове метода в стеке создается новый кадр для хранения параметров метода и локальных переменных. По завершении метода кадр удаляется из стека. Стек соответствует структуре «Последним пришел — первым обслужен» (LIFO).

Методы, связанные со стеком:

  • push(): добавляет элемент на вершину стека.
  • pop(): удаляет и возвращает элемент из вершины стека.
  • peek(): возвращает элемент из вершины стека, не удаляя его.
  • isEmpty(): проверяет, пуст ли стек.
  • size(): возвращает количество элементов в стеке.
  • search(Object element): ищет указанный элемент в стеке и возвращает его позицию.
  1. Куча.
    Куча — это область памяти, используемая для динамического распределения памяти. Объекты создаются в куче и доступны из любого места программы. Память, выделенная в куче, должна быть освобождена программистом вручную, когда она больше не нужна. В куче нет определенного порядка выделения и освобождения памяти.

Методы, связанные с кучей:

  • новое: используется для создания объектов в куче.
  • delete: используется для освобождения памяти в куче вручную.