Сборка мусора — это не любой процесс, запускаемый каким-либо образом вручную или с помощью какой-либо программы, это точно так же, как и любой другой процесс, инициируемый .Net framework самостоятельно, путем принятия нескольких решений, и решение — это не что иное, как запуск программы, он запускается автоматически в фоновом режиме. Хорошо, не правда ли.

Что за история тогда?

всякий раз, когда вы создаете какой-либо экземпляр в C #, CLR выделяет память в куче, и этот процесс повторяется для всех созданных вами объектов, но выделение памяти не является неограниченным, что означает, что вы не можете использовать все 16 ГБ ОЗУ для своей программы, поэтому необходимо управлять выделенной памятью.

Сборщик мусора приходит на помощь в этом действии. Он просто совершает поездку в кучу и проверяет, какая неиспользуемая память в текущем состоянии, а также проверяет, если это необходимо для предстоящих операций, и если вы не мертвы сейчас, и освобождаете выделенную память. Это картинка высокого уровня.

Хорошо, теперь F12 (если вы не использовали VS, извините, чувак, вы должны закрыть статью здесь), означает один шаг внутрь,

Когда когда-либо процесс запускал виртуальную память, созданную из основной памяти для процесса. Таким образом, программа работает только с выделенной виртуальной памятью, а не с основной. GC тоже работает в основном на этом виртуале.

ОК Теперь F12 в виртуальной памяти,

Виртуальная память имеет три блока

  1. Бесплатно (определение не требуется)
  2. Зарезервировано (уже выделено)
  3. Зафиксировано (эта память не выделена основной/физической и недоступна для выделения пространства).

Теперь пример,

Вы когда-нибудь сталкивались с ошибкой памяти из-за переполнения виртуальной памяти? Вид исключения, с которым сталкиваются в большинстве корпоративных приложений.

Теперь вы должны относиться к вышеупомянутым 3 пунктам, и GC вступает в действие, чтобы спасти от ошибки времени выполнения.