C# Как освобождать оперативную память завершенных Task'ов?
В VisualStudio есть неплохой инструмент профилирования - можете посмотреть где течет память.
А вообще - пока есть переменная, ссылающаяся на экземпляр класса - память освобождена не будет. Из того что вы написали - вам нужно по завершении каждой таски удалять ее из taskList.
Создай список тасков. После завершения таска, таск должен удалить себя из списка. И да, почитай про MaxThreads. https://docs.microsoft.com/ru-ru/dotnet/api/system...