.NET 4.x Почему не очищается память после очистки List а? - C#
Формулировка задачи:
Привет.
Есть такой код:
Что происходит: запускаю программу, она ждет ввод символа. В данный момент программа занимает около 4 МВ памяти. Нажимаю энтер, запускается метод Test. Как видно, этот метод заполняет большой лист строк, затем его очищает. В ходе работы этого метода потребление памяти растет, и рост заканчивается около 350 МВ. Далее, программа снова ждет ввод символа...и, как я ожидал, объем занятой памяти должен был заметно снизиться, ведь метод Test завершил работу, и я очистил лист перед выходом из метода. Кроме того, я не вижу больше никаких ссылок на лист, и он должен был попасть в сборку мусора.
Однако, по-прежнему занято 350 МВ. памяти. Почему так?
static void Main(string[] args)
{
Console.ReadKey();
Test();
Console.ReadKey();
}
static void Test()
{
var list = new List<string>();
for(int i=0; i< 10000000;i++)
{
list.Add(i.ToString());
}
list.Clear();
}
}Решение задачи: «.NET 4.x Почему не очищается память после очистки List а?»
textual
Листинг программы
static void Main(string[] args)
{
Console.ReadKey();
Test();
Console.ReadKey();
}
static void Test()
{
var list = new List<string>();
for (int i = 0; i < 10000000; i++)
{
list.Add(i.ToString());
}
list.Clear();
list = new List<string>();
GC.Collect();
}