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