Chaitali Patkar Ответов: 2

Кто вызывает gc. collect () в C#? Это CLR?


Who calls GC.Collect() in C#? is it a CLR?


Что я уже пробовал:

Я пытался найти работу GC.Collect () но я не нашел ни одной хорошей статьи. Пожалуйста, помогите понять вызывающего абонента ГК.Собирать()

2 Ответов

Рейтинг:
2

Suvendu Shekhar Giri

Цитата:
Кто звонит в ГК.Collect () в C#? это CLR?

Это вы (ваш код) звоните GC.Collect()- Я верю.

GC. метод сбора (система)[^]
Когда звонить в ГК.Collect () - лакомые кусочки выступления Рико Мариани[^]


Рейтинг:
0

OriginalGriff

В сущности, так оно и есть: это просто делается за кулисами.
Когда вы создаете новый экземпляр класса, пространство должно быть выделено в куче. Система распределения ищет подходящий "кусок" памяти для использования, и если она его не находит, она вызывает сборщик мусора, чтобы попытаться освободить его.
Если подумать, то это единственное разумное время, чтобы сделать это - вам нужна память, поэтому именно тогда нужно время, чтобы найти ее!

Вот почему очень важно использовать Dispose (или a using блок) для обеспечения высвобождения драгоценных ресурсов: если вы не избавитесь от потока файлов, когда закончите с ним, то файл останется открытым до тех пор, пока приложение не закроется или у вас не закончится память GC - именно поэтому люди очень часто получают ошибки "файл в использовании" и не могут понять, что его использует!