35 lines
6.5 KiB
Markdown
35 lines
6.5 KiB
Markdown
|
---
|
|||
|
title: Garbage Collection
|
|||
|
localeTitle: Вывоз мусора
|
|||
|
---
|
|||
|
## Вывоз мусора
|
|||
|
|
|||
|
#### Что такое сбор мусора?
|
|||
|
|
|||
|
Сбор мусора - это процесс, в котором программы пытаются освободить пространство памяти, которое больше не используется объектами и т. Д. Сбор мусора осуществляется по-разному для каждого языка. Большинство языков программирования высокого уровня имеют встроенную сборку мусора. Низкоуровневые языки программирования могут добавлять сборку мусора через библиотеки.
|
|||
|
|
|||
|
Как было сказано выше, каждый язык программирования имеет свой собственный метод GC. В программировании на C разработчикам необходимо позаботиться о распределении памяти и освобождении, используя функции `malloc()` и `dealloc()` . Для приложений C # разработчикам больше не нужно заботиться о GC, и это также не рекомендуется, потому что .NET framework уже справляется с этим.
|
|||
|
|
|||
|
\#### Как происходит распределение памяти? В C # распределение памяти в памяти происходит в управляемой куче, и это выполняется CLR (Common Language Runtime). Распределение памяти для кучи выполняется через win32.dll в операционной системе (OS), как и в C. Но в C объекты помещаются в память, если свободное пространство соответствует размеру объекта. И отображение памяти работает на основе концепций Linkedlist. В C # распределение памяти для кучи происходит линейным образом, то есть один за другим.
|
|||
|
|
|||
|
Всякий раз, когда создается новый объект, в куче выделяется память, и указатель переходит к следующему адресу памяти. Распределение памяти в C # быстрее, чем C. В C памяти необходимо искать и выделять для объекта, который добавляет некоторое накладное время.
|
|||
|
|
|||
|
\#### Поколения в C # GC В программировании .net куча имеет три поколения под названием Generation 0, 1, 2.
|
|||
|
|
|||
|
Генерация 0 заполняется сначала всякий раз, когда создается новый объект. Сборщик мусора запускается, когда поколение 0 заполняется. вновь созданные объекты помещаются в Generation 0. При выполнении сбора мусора все нежелательные объекты уничтожаются, память освобождается и уплотняется. GC заботится о том, чтобы указывать указатели освобожденной памяти после GC.
|
|||
|
|
|||
|
Поколения 1 и 2 имеют объект, который имеет более длительный срок службы. GC на поколениях 1 и 2 не будет происходить до тех пор, пока у поколений 0 не будет достаточной памяти для распределения.
|
|||
|
|
|||
|
Не рекомендуется использовать программный код GC. Хорошо, если это произойдет само по себе. GC выполняется всякий раз, когда заполняется поколение 0. GC не влияет на производительность приложения.
|
|||
|
|
|||
|
Сбор мусора - это процесс, в котором программы пытаются освободить пространство памяти, которое больше не используется переменными, объектами и т. Д. Сбор мусора осуществляется по-разному для каждого языка. Большинство языков программирования высокого уровня имеют встроенную сборку мусора. Низкоуровневые языки программирования могут добавлять сборку мусора через библиотеки.
|
|||
|
|
|||
|
Сбор мусора - это инструмент, который экономит время для программиста, например, он заменяет необходимость в таких функциях, как malloc () и free (), которые находятся на C. Это также помогает предотвратить утечку памяти.
|
|||
|
|
|||
|
Недостатком сборки мусора является то, что это негативно сказывается на производительности. Программа должна регулярно запускаться по программе, проверять ссылки на объекты и очищать память - это требует ресурсов и часто требует приостановки программы.
|
|||
|
|
|||
|
Если объект не имеет ссылок (больше недоступен), он имеет право на сбор мусора. Например, в приведенном ниже коде Java объект Thing, на который первоначально ссылается «thing1», имеет свою единственную ссылку, перенаправленную на другой объект в куче, - тогда он недоступен и будет иметь память, нераспределенную сборщиком мусора.
|
|||
|
|
|||
|
#### Дополнительная информация:
|
|||
|
|
|||
|
\- \+ - https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals - узнать больше о сборке мусора
|