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

  Рет қаралды 32,860

MobileDevBlog

MobileDevBlog

7 жыл бұрын

Статья о стек памяти и кучи в Java:
javadevblog.com/chto-takoe-he...
Подписывайтесь в соц. сетях!
Facebook: / javadevblogcom
Twitter: / javadevblogcom
E-mail: eepurl.com/cvWbbX
Javadevblog.com - программирование на Java и разработка под Android

Пікірлер: 32
@ihormanzii
@ihormanzii 3 жыл бұрын
В Java параметры всегда передаются только по значению, что определяется как «скопировать значение и передать копию». С примитивами это будет копия содержимого. Со ссылками - тоже копия содержимого, т.е. копия ссылки. При этом внутренние члены ссылочных типов через такую копию изменить возможно, а вот саму ссылку, указывающую на экземпляр - нет.
@user-ug2wq1do9e
@user-ug2wq1do9e Жыл бұрын
согласен
@GerNik0794
@GerNik0794 6 жыл бұрын
Отличное видео! Все коротко и ясно, спасибо!
@nurtdinovayrat
@nurtdinovayrat 6 жыл бұрын
Хорошая вводная. Спасибо.
@marinacherkasova5449
@marinacherkasova5449 4 жыл бұрын
Спасибо!
@user-varmat
@user-varmat 5 жыл бұрын
Видно, что постарался, круто, наглядно получилось.
@AlexanderSergeenko
@AlexanderSergeenko 5 жыл бұрын
По-моему в строке #7 переменная будет интернирована в пул строк только при вызове метода intern(), который либо вернет ссылку на уже существующую в пуле строку, либо добавит новую строку в пул и вернет ссылку на новый объект.
@grayhouse6925
@grayhouse6925 3 жыл бұрын
Хорошее видео, только в java , согласно документации, все передается по значению. Просто у ссылочных типов значением является ссылка. Соответственно создается копия этой ссылки и передается в метод
@atlasua2021
@atlasua2021 3 жыл бұрын
если копия то она добавляется в стек?
@user-df1bx3jl2c
@user-df1bx3jl2c 3 жыл бұрын
Вообще автор сказал так: "Объекты передаются по ссылке". Первое - в Java объекты вообще не передаются! В методы я передаю либо копию (значение) текущего значения в случае примитивных типов данных, либо копию (значение) ссылки. Второе - всё передаётся по значению, и передача ссылки на объект в функцию - это передача копии ссылки, а точнее передача копии адреса в памяти, по которому хранится объект. Попытался ясно выразиться, но может быть не получилось, так что поправьте в местах, где я был не прав или не точен :)
@atlasua2021
@atlasua2021 3 жыл бұрын
@@user-df1bx3jl2c Та это ж очевидно) что копия
@user-df1bx3jl2c
@user-df1bx3jl2c 3 жыл бұрын
@@atlasua2021 ну ды)
@akaAlekseyS
@akaAlekseyS 5 жыл бұрын
Про пул строк имхо неверно. Имхо пул строк содержит строковые литералы, определенные в программе.
@whoIsMisterNikolay
@whoIsMisterNikolay 5 жыл бұрын
Да, в пул строк отправляются только литералы. В примере автора string будет просто в heap. examples.javacodegeeks.com/core-java/lang/string/java-string-pool-example/
@vitaliykopach4300
@vitaliykopach4300 5 жыл бұрын
Внутри ссылка представляет собой набор битов, который указывает на объект в куче, также как и любая переменная(например byte b = 6, означает что bit pattern в переменной (byte holder) - 00000110, int holder уже хранить 32 бита и и т.д). Поэтому при передаче ссылки в метод, битовое представление ссылки(Reference variable bit holder), не объект, копируеться, а копиреуться - если просто - то способ того как добраться до объекта. Формат хранения зависит от VM. В данном случае instance variable - object and param имеют одинаковый bit pattern. Следовательно все в Java передается по значению. P/s String это совсем другая история.
@yerkebulantursynbek9860
@yerkebulantursynbek9860 Жыл бұрын
спасибо
@nikolayshahinyan4886
@nikolayshahinyan4886 4 жыл бұрын
Вы на 2:40 минуте рассказывая про третью строку, сказали что "стековая память содержит ссылку на Object", читаю книгу "Изучаем Java", на 277 стр., в разделе ключевые моменты , говориться что " если переменная - это ссылка на объект, то она будет храниться вместе с ним в КУЧЕ!", не очень понимаю этот момент, объясните пожалуйста!
@oleghalat3140
@oleghalat3140 2 жыл бұрын
Вероятно, в вашем примере речь шла об обьекте, на который ссылается поле класса. Поскольку обьекты класса хранятся внутри кучи, то, следовательно, и ссылки на другие обьекты (в полях) также хранятся в куче.
@manOfPlanetEarth
@manOfPlanetEarth 2 жыл бұрын
@@oleghalat3140 Салют. Разбираешься?:) Подкинешь что-нибудь по модели памяти в джаве? Я даже на канале jug ru ничего не нашел (точнее только один видос, скоро буду смотреть). Только надо на уровне. Похоже, надо на английском искать и в тексте. Может, в доках есть🤔 В общем, если есть качественный линк - делитесь:)
@taraskutselya1326
@taraskutselya1326 5 жыл бұрын
А разве все классы (точней их байт коды), а также описания всех методов (их инструкции) при запуске загружаются не в PermGem (Method space) ? Примитивы и ссылки на объекты в Stack (как и говорит автор)? В Heap'е размещаются уже сами объекты? А то начал изучать Java и пробую разобраться во всем этом.
@user-gl2bt1on5p
@user-gl2bt1on5p 5 жыл бұрын
Автор вряд-ли вообще слышал про этот твой пермгем. Автор умный канеш , но не до такой же степени😏
@MrOldschoolrocknroll
@MrOldschoolrocknroll 2 жыл бұрын
PermGen* :)
@manOfPlanetEarth
@manOfPlanetEarth 2 жыл бұрын
Привет! Разобрался с темой? Если да - посоветуешь материал (видео/статья/доки)? А то, по-моему, в этом ролике местами каша.
@alice_gumileva
@alice_gumileva Жыл бұрын
@@manOfPlanetEarth да, там ерунда, я читала Основы Java (для 8 версии), Хорстманн, там сказано, что всё в Java передается по значению, но нормальной инфы про память пока не искала, вот решила, может на ютубе кто нормально объяснит, но это точно минус. Найду - кину
@manOfPlanetEarth
@manOfPlanetEarth Жыл бұрын
@@alice_gumileva ок.
@Bonik-cj2zu
@Bonik-cj2zu 5 жыл бұрын
в Java ВСЕ передается по ЗНАЧЕНИЮ.
@user-varmat
@user-varmat 5 жыл бұрын
Мне кажется он просто оговорился, так как дальше сказал что создается копия ссылки.
@user-varmat
@user-varmat 5 жыл бұрын
@@user-gl2bt1on5p вникайте в суть, а не в слова))
@alice_gumileva
@alice_gumileva Жыл бұрын
@@user-varmat когда новичок это смотрит - это вообще не работает, а тому кто шарит - такие видео не нужны
@bones_wp_
@bones_wp_ 4 ай бұрын
В видео много ошибок, не советую смотреть его, как обучающее
@user-hn7yq1eh6n
@user-hn7yq1eh6n 11 ай бұрын
Спасибо!
@atlasua2021
@atlasua2021 3 жыл бұрын
Спасибо!
C# Стек и Куча | Stack and Heap | Часть 1
11:02
Как работает Java - ликбез
8:51
Хороший программист
Рет қаралды 67 М.
Дарю Самокат Скейтеру !
00:42
Vlad Samokatchik
Рет қаралды 4,6 МЛН
Жайдарман | Туған күн 2024 | Алматы
2:22:55
Jaidarman OFFICIAL / JCI
Рет қаралды 1,8 МЛН
Зачем нужны указатели в C++?
8:14
Dima
Рет қаралды 3,8 М.
Дженерики в Java. Проще чем кажется.
21:36
Игорь Мешалкин
Рет қаралды 14 М.