Существуют разные способы очистки неиспользуемой памяти на разных языках / платформах.
В земле C ++ у вас есть (например) умные указатели с подсчетом ссылок, которые автоматически вызывают delete на своих указателях, когда их количество достигает нуля,Если вы ожидаете такого поведения в мире .NET, вы будете разочарованы!:)
Модель .NET GC сильно отличается.Чтобы избавить вас от необходимости беспокоиться о ручном управлении вашей памятью, CLR позаботится о том, чтобы отслеживать, какие ссылки используются, и очищает память по мере необходимости.Однако мониторинг и проверка того, какие ссылки используются, является относительно дорогим процессом.Поэтому сборщик мусора не работает непрерывно.Например, он срабатывает, когда возникает нехватка памяти (и в других ситуациях, но это, конечно, упрощение).
Краткий ответ в основном: пусть сборщик мусора выполнит свою работу.Это очень умная и высоко оптимизированная система, и вам редко (если вообще) придется самостоятельно запускать сборку мусора.