Как виртуальная машина .NET понимает, что объект пора уничтожать? И когда это происходит?
Подробно про сборщик мусора можно почитать тут:
https://habr.com/ru/post/125968/ (не самая актуальная статья, но в целом ок)
https://habr.com/ru/company/clrium/blog/463293/
https://github.com/dotnet/coreclr/blob/master/Docu...
Вкратце, он отслеживает все ссылки на объекты, и если к объекту уже точно никто не сможет обратиться - уничтожает его.
Точный момент времени уничтожения объекта в общем случае сложно назвать
Что будет если нужно выполнить код выше в цикле? То есть будет создано множество объектов.
По идее они мне в дальнейшем не нужны. Как только я получил return (имя папки), этот объект мне не нужен.
И если всё это в цикле, логично будет сразу уничтожить объект.
В этом случае GC очень быстро их соберёт, тк единственная ссылка на этот объект была в переменной в этом методе.
Самостоятельно ничего делать не надо.
Никакой утечки памяти не будет.
Правда если этот код будет выполняться уж очень часто, и он является горячим местом - имеет смысл отказаться от FileInfo, и парсить пути без засирания кучи.