.NET не освобождает память, чтобы удовлетворить людей, смотрящих на диспетчер задач. Выделение памяти стоит дорого. CLR разработан так, чтобы делать это экономно и удерживать любую память, которую он выделяет, как можно дольше. Подумайте об этом так: какой смысл иметь 4 ГБ памяти, когда вы не используете половину этого объема?
Если вы на самом деле не ЗНАЕТЕ, что у вас есть утечка памяти (например, ваше приложение падает после двух дней безотказной работы), позвольте мне дать вам совет ... Закройте диспетчер задач. Не оптимизируйте для памяти, прежде чем вы знаете, что вам нужно. Расслабься, парень. Все хорошо.