Что такое Heap и Stack память в Java? Разбор на примере

preview_player
Показать описание
Статья о стек памяти и кучи в Java:

Подписывайтесь в соц. сетях!

Рекомендации по теме
Комментарии
Автор

А как вы считаете, какие методы лучше использовать для оптимизации памяти в Java? Лично я долго выбирал курсы по IT, рассматривал разные компании, но в итоге выбрал Skypro из-за наличия наставника. После окончания курса получил оффер и перешел на удаленку))

EdmundBowie-nz
Автор

В Java параметры всегда передаются только по значению, что определяется как «скопировать значение и передать копию». С примитивами это будет копия содержимого. Со ссылками - тоже копия содержимого, т.е. копия ссылки. При этом внутренние члены ссылочных типов через такую копию изменить возможно, а вот саму ссылку, указывающую на экземпляр - нет.

ihormanzii
Автор

Хорошее видео, только в java, согласно документации, все передается по значению. Просто у ссылочных типов значением является ссылка. Соответственно создается копия этой ссылки и передается в метод

grayhouse
Автор

По-моему в строке #7 переменная будет интернирована в пул строк только при вызове метода intern(), который либо вернет ссылку на уже существующую в пуле строку, либо добавит новую строку в пул и вернет ссылку на новый объект.

AlexanderSergeenko
Автор

Про пул строк имхо неверно. Имхо пул строк содержит строковые литералы, определенные в программе.

akaAlekseyS
Автор

Видно, что постарался, круто, наглядно получилось.

varmat
Автор

Внутри ссылка представляет собой набор битов, который указывает на объект в куче, также как и любая переменная(например byte b = 6, означает что bit pattern в переменной (byte holder) - int holder уже хранить 32 бита и и т.д). Поэтому при передаче ссылки в метод, битовое представление ссылки(Reference variable bit holder), не объект, копируеться, а копиреуться - если просто - то способ того как добраться до объекта. Формат хранения зависит от VM. В данном случае instance variable - object and param имеют одинаковый bit pattern. Следовательно все в Java передается по значению.
P/s String это совсем другая история.

vitaliykopach
Автор

Отличное видео! Все коротко и ясно, спасибо!

GerNik
Автор

А разве все классы (точней их байт коды), а также описания всех методов (их инструкции) при запуске загружаются не в PermGem (Method space) ?
Примитивы и ссылки на объекты в Stack (как и говорит автор)?
В Heap'е размещаются уже сами объекты?
А то начал изучать Java и пробую разобраться во всем этом.

taraskutselya
Автор

Вы на 2:40 минуте рассказывая про третью строку, сказали что "стековая память содержит ссылку на Object", читаю книгу "Изучаем Java", на 277 стр., в разделе ключевые моменты, говориться что " если переменная - это ссылка на объект, то она будет храниться вместе с ним в КУЧЕ!", не очень понимаю этот момент, объясните пожалуйста!

nikolayshahinyan
Автор

В видео много ошибок, не советую смотреть его, как обучающее

bones_wp_