Здравствуйте!
Подскажите как правильно очистить всю занятую память в IEnumerable
Собираю файлы с директории в другую папку, вначале проходит долго, после 2 запуска файлы быстро появляются собранные из памяти.
Код:
public static void Viscan(string ss, string[] Format, string z)
{
long Limit = 100000000;
long LowLimit = 0;
IEnumerable<string> findFiles = Directory.GetFiles(ss, "*.*", System.IO.SearchOption.AllDirectories);
if (Directory.Exists(z))
foreach (string fileName in findFiles)
{
string ext = Path.GetExtension(fileName).ToLower();
if (Array.IndexOf(Format, ext) < 0) continue;
try
{
var fileSize = new FileInfo(fileName).Length;
if (LowLimit + fileSize > Limit) continue;
File.Copy(fileName, Path.Combine(z, Path.GetFileName(fileName)), true);
LowLimit += fileSize;
}
catch { }
}
}
IEnumerable<string> findFiles = Directory.GetFiles(ss, "*.*", System.IO.SearchOption.AllDirectories);
Здесь вы определяете переменную ссылочного типа IEnumerable<string>
с именем findFiles
, которая в результате присваивания ссылается на объект в куче, являющийся массивом строковых переменных. Данные хранятся в управляемой куче. Переменная объявлена внутри метода, следовательно, после того, как метод отработает, ссылки на объект в управляемой куче уже не будет. Поэтому после того, как CLR
сама в нужный момент вызовет Garbage Collector (сборщик мусора), памать, выделенная под вашу переменную сама освободится.
Вы имеете ввиду что первые два запуска файлы медленно копируются, а потом быстро? Если так, то тут имеет место быть работа менеджера памяти Windows, который просто держит часто используемые файлы отображенными в память, и следовательно фактически доступ к ним мгновенный.
А по поводу очистки памяти занятой перечислимым типом, короткий ответ - прямым способом никак, т.к. всем этим занимается GC (garbage collector). Конечно можно им и руками порулить вызывая GC.Collect, но зачем? Дело то не в этом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем доброго времени сутокХочу вывести таблицу из бд в таблицу на странице,как можно это сделать? в то уже всю голову сломал
По адресу bdkurs/dick есть indexphp файл в котором устанавливаю куки