Я управляю веб-сайтом, связанным с рецептами, и храню огромный график рецептов и использования их ингредиентов в памяти.Из-за способа, которым я поворачиваю эту информацию для быстрого доступа, мне нужно загрузить несколько гигабайт данных в память, когда приложение загружается, прежде чем я смогу организовать данные в очень оптимизированный график.Я создаю огромное количество крошечных объектов в куче, которые после построения графа становятся недоступными.
Все это делается при загрузке веб-приложения и, вероятно, занимает 4-5 секунд.После этого я вызываю GC.Collect();
, потому что я бы предпочел повторно запросить всю эту память сейчас, а не блокировать все потоки во время входящего HTTP-запроса, пока сборщик мусора теряет чистку всех этих недолговечных объектов.Я также считаю, что лучше очистить сейчас, поскольку куча, вероятно, менее фрагментирована в это время, так как мое приложение на самом деле больше ничего не делало до сих пор.Задержка этого может привести к тому, что будет создано гораздо больше объектов, и куча должна быть сжата больше, когда GC запускается автоматически.
Кроме этого, за мои 12 лет программирования на .NET я никогда не сталкивался сситуация, когда я хотел заставить сборщик мусора работать.