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