C# Стек и Куча | Stack and Heap | Часть 1
HTML-код
- Опубликовано: 15 июл 2024
- Это первая часть серии роликов посвященных работе памяти в .NET. В данном видео мы поговорим о том, что такое стек и куча, а также наглядно посмотрим на их совместное взаимодействие. Будет интересно :)
Ссылка на вторую часть: • C# Стек и Куча | Stack...
Telegram канал: t.me/codaza
На кофе ☕️: pay.cloudtips.ru/p/179d0532
Patreon: / codaza
Boosty: boosty.to/codaza
0:00 - Начало
1:02 - Разделение памяти
1:38 - Стек
2:24 - Типы данных сохраняемые на стеке
3:40 - Куча
5:10 - Типы данных сохраняемые в куче
6:12 - Пример работы стека
7:58 - Пример совместной работы стека и кучи
10:25 - Завершение
#csharp #стек #куча #stack #heap #stackvsheap
Удобная навигация по видео :)
0:00 - Начало
1:02 - Разделение памяти
1:38 - Стек
2:24 - Типы данных сохраняемые на стеке
3:40 - Куча
5:10 - Типы данных сохраняемые в куче
6:12 - Пример работы стека
7:58 - Пример совместной работы стека и кучи
10:25 - Завершение
Ролик классный, но есть маленький но очень бесячий минус. Музыка, она ну очень громкая
Heap стоило представить ввиде бинарного дерева
За столь хорошее объяснение можно закрыть глаза на музыку. Спасибо большое
Отличное объяснение! Когда читала про тему, ссылочные типы вообще не понимала. Сейчас гораздо лучше! Жду вторую часть. Автору спасибо!
Рад, что информация была полезной 🙂
Миллион видео пересмотрел чтобы понять где хранятся составные члены ссылочного типа, только тут автор объяснил, спасибо.
Спасибо!
Большое спасибо
Круто, автор не останавливайся!)
Это божественно!
Спасибо за инфографику!
спасибо за видео! развивай канал!
Повторение- мать учения! Особенно когда понятно и доступно изложено. Благодарность автору и однозначная подписка
Благодарю, визуализация приятная
Большое Спасибо!! Вы единственный человек который помог мне понять эту тему визуально,спасибо за старания! За то что показали как работает оперативная память на примерах и в визуальном образе благодарю вас! Очень жалко что такой крутой канал заброшен. Надеюсь что у автора на данный момент все хорошо спасибо за помощь!
Спасибо вам, очень понятно обясняете
Ля, как же круто объясняешь, спасибо
Отлично, ждем 2 часть
Материал в работе 🙂
Очень классно! Хотел освежить память :)
Большое спасибо за объяснение, очень доступно и понятно. Особенно порадовало объяснение того, что ссылочный тип находится в куче, если он часть объекта. Всегда сыпался на этом вопросе на собесах, так как было непонятно.
круто!!!!!
супер
Thanks)
You are welcome 🙂
Спасибо за видео! Небольшое уточнение относительно размещения объектов в куче: насколько я помню, на куче отдельно размещается область класса (объект), где содержатся все статичные поля, таблица виртуальных методов и тп, и отдельно - экземпляры, в которых, например, содержатся поля данных. то есть для каждого класса будет некоторая статичная область выделена, а так же области под экземпляры. На примере из видео, для класса Rocket на стеке во фрейме CreateRocket будет выделено место под ссылочную переменную, указывающую на экземпляр в куче, который в свою очередь имеет ссылку на класс (объект). Поправьте, если не прав.
Да, всё верно. На стеке хранится ссылка, которая указывает на объект расположенный в куче.
Убирайте музыку, пожалуйста. Качество звука тоже желательно улучшить. Музыка сильно мешает слушать звук с басами
а сложно фоновую музыку убрать?
Спасибо за информацию. Но мне кажется, для объяснения такой важный темы, музыка здесь лишняя)
Спасибо за обратную связь. В более поздних роликах музыка тише, а голос громче :) В этом ролике она действительно излишне громкая.
@@codaza-channel да, я уже приступил к изучению второй части темы и заметил разницу). Спасибо за уроки!
Добавить ещё анимацию, то было бы ещё лучше)
Спасибо за видео, но музыка - ужас, мало того что голос басит, так ещё и его еле слышно из за музыки.
Ну не будет объект удалён немедленно
Почему Вы так считаете?
@@codaza-channel Прочитайте в документации. Он вызывается если мы вызвали Collect, если заканчивается память или выделенная память превышает допустимый порог
Благодарю за подробное уточнение. Я перепроверил официальную документацию на сайте Microsoft, это действительно так. Оставлю ссылку на документ, на случай, если кому то из гостей канала потребуется информация из первоисточника: docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals?redirectedfrom=MSDN#conditions_for_a_garbage_collection
От примера с ракетой глаз дергается. Больная тема.
Спасибо за контент! Только 2 маленьких уточнения:
- Стек находится не в оперативной памяти, а в реестровой памяти процессора
- Гарбедж коллектор не сразу же удалит объект из кучи если на него нету больше ссылки, а когда наполниться поколение и не будет места для новых объектов (разве что принудительно вызовем GC.Collect() method)
Рад, что ролик оказался полезным. Благодарю за важные уточнения! 💙
Так, погоди
Стек расположен ведь именно в оперативке
Так везде пишут
@@misha2993 Значит везде ошибаются
Стек один на поток как раз и потому, что сам поток идет от процессора и чтобы работал так же быстро и память выделяется тут же в регистре процессора
На канале, где я учусь, а именно у Alek OS, есть видео, где он говорит про стек. И по его словам, он находится в оперативной памяти
Также в гугле нашёл доп. инфу про стек регистра процессора и вот то, что там на писано:
Стек всегда находится в оперативной памяти. Существует указатель стека, который хранится в регистре процессора, указывающем на вершину стека, то есть на адрес местоположения в верхней части стека.
@@misha2993 там все скомкано и подано вразброс
Сам СТЕК (ячейки памяти последовательности действий) находится в процессоре, а вот значения ссылочных типов - в оперативке, в стеке только ссылки на них
А вот и не немедленно. Автор почитай что-нибудь про поколения объектов.
Спасибо!