Сборка мусора (Garbage Collection, GC) .NET в C# - Учим Шарп #28

  Рет қаралды 19,990

CODE BLOG

CODE BLOG

Күн бұрын

Пікірлер: 39
@CODEBLOG
@CODEBLOG 5 жыл бұрын
На этом занятии мы узнаем, что такое сборщик мусора (garbage collector, gc) и он выполняет освобождение памяти, оберегая наши приложения от утечки. Узнаем, как выполняется сборка мусора (garbage collection), поколения (generation) объектов, а также придется чуть подробнее поговорить про ссылочные (reference type) и значимые (value type) типы, как они хранятся в памяти стека (stack) и управляемой кучи (heap). Изучим основные методы System.GC, такие как Collect, GetGeneration, GetTotalMemory и другие. Узнаем, что на самом деле делает оператор new. Кстати, меня зовут Вадим, и я программист на языке C# уже больше 8 лет. Рассказываю про IT технологии и веду этот курс по языку C# с нуля под названием Учим Шарп. В его рамках мы рассмотрим как базовый синтаксис языка C Sharp, так и его практическое применение и специальные технологии, такие как ASP.NET, Core, MVC, Unity, WCF, WPF, структуры данных и алгоритмы обработки, паттерны проектирования и многое другое. Для меня важно не только показать практическое применение языка C#, но и объяснить основную идею и базовые понятия Computer Science. Уроки c# выходят два раза в неделю в понедельник и четверг в 20-00 по МСК. Курс csharp рассчитан на то, чтобы изучить программирование с нуля. Разработка ведется в IDE Visual Studio. Подписывайтесь, впереди еще много интересного.
@alexandrsavin2266
@alexandrsavin2266 Жыл бұрын
Отдуши, бро. Смотрю в 23 году и всё равно доволен )
@m1xaedzy
@m1xaedzy 2 жыл бұрын
26:00, обьекты могут не сжиматься, алгоритм sweep, рассчитан на то, что если памяти достаточно, для размещения новых обьектов, то он будет использовать те очищенные и незанятые дырочки 27:00 о new, бесспорно, но к примеру структура тоже создается через new, но при этом располагается в стеке) 35:30 в куче есть списки свободных участков памяти, поэтому поиск их и занимает мин кол-во времени. Если ее не достаточно, gc выбежит сама
@Pirojochek93
@Pirojochek93 4 жыл бұрын
Отличный урок, большое спасибо!
@nouchance
@nouchance 2 жыл бұрын
Спасибо Сэр ! вы лучший!
@Kostiantyn_M
@Kostiantyn_M 4 жыл бұрын
В LOH обьекты попадают которые больше приблизительно 83 килобайт (>=85,000 bytes).
@atler9865
@atler9865 4 жыл бұрын
Про собеседование очень интересно! Обязательно после курса и 2 интенсивов надо погуглить вопросы
@gamb5730
@gamb5730 3 жыл бұрын
41:04 вы хотели сказать, очищаются объекты первого поколения на которых нету ссылки, а остальные переходят во 2е поколение?
@gamb5730
@gamb5730 3 жыл бұрын
или все же объектам 1го поколения на которые не ссылаются присваивается второе поколение ?
@НиколайТорощин-е6э
@НиколайТорощин-е6э 5 жыл бұрын
1:05:48 - Уважаемый, не в коем случае Я, "не умнечаю". Но для таких моментов, есть клёвая опция в Visual Studio, как "Профилировщик производительности" (Alt+F2). Там подробно можно посмотреть, как ваша программа грузит железо. Если Я конечно же не ошибаюсь) хорошего настроения, спасибо за видео) от меня 👍
@cheeryprogrammer6821
@cheeryprogrammer6821 5 жыл бұрын
Спасибо, очень доходчиво объяснено, что такое "ээээээ..." и когда его использовать.
@vladislavhmelnitskij1239
@vladislavhmelnitskij1239 4 жыл бұрын
Бротишка, ты лучший, не хочешь попилить контент конкретно по. Net core?) Если уже пилишь, то соре, не заметил, посмотрю ещё раз)
@vladislavhmelnitskij1239
@vladislavhmelnitskij1239 4 жыл бұрын
Кстати, про ресурсы для новичков, ещё habr есть, Microsoft dots(вроде так), и professor.web
@nickstark6961
@nickstark6961 4 жыл бұрын
В новых версия вижуалки, программа не останавливается, кстати.
@sashkosashok
@sashkosashok 5 жыл бұрын
Не помню рассказа про финализатор и интерфейс IDisposable в предыдущих уроках.
@CODEBLOG
@CODEBLOG 5 жыл бұрын
это отдельная тема на самом деле ) в CLR курсе эта тема будет рассматриваться подробно
@d3dx259
@d3dx259 5 жыл бұрын
Ты пытался создать свой яп?
@sqwotina
@sqwotina 5 жыл бұрын
Здравствуйте. Подскажите, пожалуйста, каким образом стэк отделяется от кучи физически? За счет чего стэк быстрее? Просто за счет упорядоченности? И еще один вопрос. Значимые типы, которые объявляются внутри класса хранятся в стэке? Например С.Value. Понятно, что ссылка на класс есть в стэке, а где сама переменная Value? Спасибо
@CODEBLOG
@CODEBLOG 5 жыл бұрын
Stask и Heap. Оба этих хранилища находятся в оперативной памяти системы (RAM), но программно-аппаратный комплекс (процессор + операционная система + библиотеки .NET) работают с этими областями памяти по-разному. Cтек намного быстрее кучи. Причина в том, каким образом выделяется стек - простым назначением указателя стека (единственная команда ассемблера). В отличие от стека куча обслуживается программно, с помощью специальных вызовов API операционной системы или библиотек. Кроме того, при интенсивном использовании кучи некоторые языки, использующие автоматический сбор мусора (например, Java, C# .NET), могут вводить не прогнозируемые дополнительные задержки при выполнении кода в реальном времени.
@sqwotina
@sqwotina 5 жыл бұрын
Спасибо. Стало немного яснее)
@СергійПанасенко-б7г
@СергійПанасенко-б7г 3 жыл бұрын
Крайне тяжело слушать, начинается предложение - тут же появляется какой то вася с глупым комментарием и на него надо отвлечься и ответить, затем еще два слова предложения - появляется петя и пете надо ответить. Отвечать нужно конечно, но МОЖЕТ - на глупые и несущественные вопросы не отвечать вообще а на вопросы по делу отвечать после каких то блоков инофмарции?
@rhm8471
@rhm8471 2 жыл бұрын
Автор оговорился насчет размера больших объектов. Согласно документации майкрософта в большую кучу попадают объекты размером 85 000байт, т.е. 83Килобайта.
@NickStarkUA
@NickStarkUA 3 жыл бұрын
Кстати инфа устарела про то, что приложение останавливается во время работы коллектора! На сколько мне известно, уже не останавливается
@m1xaedzy
@m1xaedzy 2 жыл бұрын
Да, работает в фоне
@Mulcidei
@Mulcidei 3 жыл бұрын
Извините но я так и не понял што делаэт диструктор (~) ???
@juliusmalkov9620
@juliusmalkov9620 5 жыл бұрын
я смелый человек готовый на собеседование) но не сейчас) через месяц полтора точно)
@d3dx259
@d3dx259 5 жыл бұрын
Когда сказал "Йоу" - 25 лет
@CODEBLOG
@CODEBLOG 5 жыл бұрын
Если бы оно так работало...
@ЮлияСоболь-ь4к
@ЮлияСоболь-ь4к 5 жыл бұрын
спасибо большое =)
@CODEBLOG
@CODEBLOG 5 жыл бұрын
Всегда пожалуйста )
@Console.WriteLine
@Console.WriteLine Жыл бұрын
Музыка отвлекает, особенно когда смотришь на 1.5
@yauhenidzenisenka8874
@yauhenidzenisenka8874 5 жыл бұрын
Много трепа не по теме и отвлечений. Про стэк и хип начинал раз 10, прерывался на комменты, на что-то еще, в итоге за 10 минут не мог связать 2 слов.
@m1xaedzy
@m1xaedzy 3 жыл бұрын
Даа, отвлечения достали, но помогло х1.5 😂
@kontrast6514
@kontrast6514 2 жыл бұрын
Когда чел посмотрел первые 15 минут и сделал вывод по всей трансляции
@YTsyvinda
@YTsyvinda 5 жыл бұрын
На 40й минуте когда подводите итоги про поколения, правильно ли я понял: поколение 0 поколение 1 поколение 2 if(памяти не хватает) { вызывается Garbage Collection; foreach( делает проход по поколеню 0) { if(ссылка на объект есть) { объекту присваивается поколение 1; происходит фрагментация малых объектов; } else { ссылка на объект удаляется; } } if(памяти хватает) { GC прекращает работу; } else { foreach(делает проход по поколению 1) { if(ссылка на объект есть) { объекту присваивается поколение 2; происходит фрагментация малых объектов; } else { поколение объекта понижается на 1; снова GC делает проход по поколению 0; // с проверками // и если после всего этого памяти снова не хватает то тогда с поколение 2 происходит всё тоже что и с поколением 1 } } } }
@CODEBLOG
@CODEBLOG 5 жыл бұрын
Не совсем. Поколение объекта не понижается. Упорядочивание объектов производится перед завершением работы сборщика мусора.
@YTsyvinda
@YTsyvinda 5 жыл бұрын
@@CODEBLOG спасибо за ответ!
@EduardMalxa
@EduardMalxa 3 жыл бұрын
++
@alexazimov420
@alexazimov420 2 жыл бұрын
Какой ты нудный. И постоянно теряешь тему.
Базовый тип Object в C# - Учим Шарп #29
2:00:17
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН
Мясо вегана? 🧐 @Whatthefshow
01:01
История одного вокалиста
Рет қаралды 7 МЛН
Арыстанның айқасы, Тәуіржанның шайқасы!
25:51
QosLike / ҚосЛайк / Косылайық
Рет қаралды 700 М.
.NET Core Garbage Collection
14:54
Coding Tutorials
Рет қаралды 25 М.
Сборка мусора (garbage collection) в Python
42:57
Python Clinic
Рет қаралды 4,1 М.
Вопросы собеседования на C# программиста
21:04
Програмысли Влог
Рет қаралды 68 М.
Что такое gRPC и Protobuf?
8:37
Merion Academy
Рет қаралды 61 М.
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН