Кто вызывает gc. collect () в C#? Это CLR?
Who calls GC.Collect() in C#? is it a CLR?
Что я уже пробовал:
Я пытался найти работу GC.Collect () но я не нашел ни одной хорошей статьи. Пожалуйста, помогите понять вызывающего абонента ГК.Собирать()
Who calls GC.Collect() in C#? is it a CLR?
Цитата:Кто звонит в ГК.Collect () в C#? это CLR?
GC.Collect()
- Я верю.
В сущности, так оно и есть: это просто делается за кулисами.
Когда вы создаете новый экземпляр класса, пространство должно быть выделено в куче. Система распределения ищет подходящий "кусок" памяти для использования, и если она его не находит, она вызывает сборщик мусора, чтобы попытаться освободить его.
Если подумать, то это единственное разумное время, чтобы сделать это - вам нужна память, поэтому именно тогда нужно время, чтобы найти ее!
Вот почему очень важно использовать Dispose (или a using
блок) для обеспечения высвобождения драгоценных ресурсов: если вы не избавитесь от потока файлов, когда закончите с ним, то файл останется открытым до тех пор, пока приложение не закроется или у вас не закончится память GC - именно поэтому люди очень часто получают ошибки "файл в использовании" и не могут понять, что его использует!