.NET 4.x Почему не очищается память после очистки List а? - C#

Узнай цену своей работы

Формулировка задачи:

Привет. Есть такой код:
Листинг программы
  1. static void Main(string[] args)
  2. {
  3. Console.ReadKey();
  4. Test();
  5. Console.ReadKey();
  6. }
  7. static void Test()
  8. {
  9. var list = new List<string>();
  10. for(int i=0; i< 10000000;i++)
  11. {
  12. list.Add(i.ToString());
  13. }
  14. list.Clear();
  15. }
  16. }
Что происходит: запускаю программу, она ждет ввод символа. В данный момент программа занимает около 4 МВ памяти. Нажимаю энтер, запускается метод Test. Как видно, этот метод заполняет большой лист строк, затем его очищает. В ходе работы этого метода потребление памяти растет, и рост заканчивается около 350 МВ. Далее, программа снова ждет ввод символа...и, как я ожидал, объем занятой памяти должен был заметно снизиться, ведь метод Test завершил работу, и я очистил лист перед выходом из метода. Кроме того, я не вижу больше никаких ссылок на лист, и он должен был попасть в сборку мусора. Однако, по-прежнему занято 350 МВ. памяти. Почему так?

Решение задачи: «.NET 4.x Почему не очищается память после очистки List а?»

textual
Листинг программы
  1.         static void Main(string[] args)
  2.         {
  3.             Console.ReadKey();
  4.             Test();
  5.             Console.ReadKey();
  6.         }
  7.  
  8.         static void Test()
  9.         {
  10.             var list = new List<string>();
  11.             for (int i = 0; i < 10000000; i++)
  12.             {
  13.                 list.Add(i.ToString());
  14.             }
  15.             list.Clear();
  16.             list = new List<string>();
  17.             GC.Collect();
  18.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы