У меня есть вопрос о том, как сборка мусора может быть обработана в запросе linq.
Предположим, мне дан список запросов для обработки. Каждый запрос генерирует очень большой набор данных, но затем применяется фильтр, чтобы хранить только критические данные от каждой запрошенной нагрузки.
//Input data
List<request> requests;
IEnumerable<filteredData> results = requests.Select(request => Process(request)).Select(data => Filter(data));
Итак, я знаю, что запрос откладывается для каждого элемента данных до тех пор, пока не будет запрошен каждый отфильтрованный элемент данных, и это хорошо. Но сохраняется ли эта средняя интенсивная память часть, пока перечисление не будет завершено?
Я надеюсь, что случится так, что каждый элемент данных может быть собран мусором, как только он пройдет стадию фильтрации, таким образом, убедившись, что у меня достаточно памяти для обработки всего списка. Так ли это, или перечислимое среднее сохраняет все до тех пор, пока не закончится весь запрос? Если да, то есть ли способ решить эту проблему?
примечание: функция Process () генерирует данные, интенсивно использующие память ... вот что меня беспокоит