Как работает сборка мусора в .NET, и при каких условиях объекты из поколения 2 не будут собраны, даже если система испытывает давление по памяти?
Сборка мусора в .NET делит объекты на поколения 0, 1 и 2. Объекты в поколении 2 собираются только при полной (Gen2) сборке, которая триггерится при сильном давлении на память или по явному вызову GC.Collect(). Однако объекты из поколения 2 не будут собраны, если на них остаются сильные ссылки, включая кэш, события (если делегаты не отписаны), или если они участвуют в ссылочных циклах, не распознаваемых сборщиком из-за GCHandle, static-ссылок или нативных ресурсов без финализатора.
Библиотека собеса по С#
Post #775
1.98K
- 👍 1