СТАТЬИ
Прокачай свои навыки Java – стань востребованным специалистом пройдя стажировку!
Вы хотите вырасти до опытного Java-разработчика и работать в крупной IT-компании?
RoadMap IT School поможет вам в освоении новых технологий Java и Spring на реальном примере в форме практической стажировки. Длительность 3 месяца. Команда из 5 человек. Тимлид уровня Senior

Основы памяти в Java: Куча и Стек.

В Java память разделяется на две основные части: стек (stack) и кучу (heap).

Стек(stack) это область памяти, используется для хранения локальных переменных и вызовов методов. Хранит ссылки на объекты в куче, а также типы значений (примитивных типов), которые содержат само значение, а не ссылку на объект. Работает по принципу LIFO (последним вошел, первым вышел). Быстрый доступ к данным. Потокобезопасен, так как каждый поток имеет свой собственный стек. Переменные в стеке имеют определенную видимость, известную как область видимости. Доступ к объектам из стека возможен только в пределах активной области видимости. Память освобождается автоматически при завершении метода.


Куча(heap) в Java — это область памяти, используемая для динамического выделения памяти под объекты и классы во время выполнения программы. Когда создается новый объект, память для него выделяется в куче. Куча служит для хранения фактических объектов, на которые указывают ссылки из стека. Служит для объектов и данных, созданных с помощью оператора new. JVM разделяет память на две области: кучу (heap), где хранятся данные приложения, и не-кучу (non-heap), где хранятся код программы и другие вспомогательные данные. Доступ к данным медленнее, чем в стеке. Объекты в куче могут быть доступны из любого места программы. Не является потокобезопасной, требует синхронизации при доступе из нескольких потоков.


В Java также существует концепция сборки мусора (garbage collection), которая автоматически освобождает память, занятую объектами, которые больше не используются программой. Сборка мусора происходит автоматически, без вмешательства разработчика.
Улучши свои карьерные возможности.
Пройди стажировку и стань Middle разработчиком Java
Получи практический опыт разработки Java проекта в Agile команде с наставником. Ты можешь попробовать прямо сейчас!
Made on
Tilda