.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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д