Вызов GC.Collect
от руки почти всегда является плохой вещью , и я бы особо добавил, что если вы звоните ему шесть раз подряд, то вы разрушаете любой шанс, который имел GCразумно управлять памятью вашего приложения.
GC.Collect()
не удалит элементы, которые все еще являются ссылками;в режиме отладки это может включать вашу переменную tt
.Вызов GC.Collect
в этом сценарии просто переведет указанный объект в поколение GC 1, что означает, что он не будет (автоматически) собираться намного дольше.
Кроме того, мониторинг использования памяти с помощью диспетчера задач никогда надежный.Я бы не стал доверять диспетчеру задач указание на утечку памяти, если она только медленно набирает обороты.
В любом случае, мой ответ на ваш вопрос будет таким: нет, у вас нет утечки памяти.Я думаю, что вы можете увидеть увеличение использования памяти (что отличается от утечки памяти!).Память может быть восстановлена, но неправильное использование сборщика мусора, вероятно, задерживает этот процесс, и поэтому использование вашей памяти выше, чем могло бы быть.