Вы смотрите на использование памяти в диспетчере задач? Это не точный способ для профилирования вашего приложения: в эту цифру будет включено много несущественных данных.
Для управляемого приложения, я ожидаю увидеть увеличение из-за загрузки среды выполнения вообще. Более того, сборщик мусора .NET не агрессивно обращается с памятью: он пытается отложить сборы до тех пор, пока не кончится память.
Сборщик мусора имеет тенденцию распределять память лучше, чем неуправляемый. Неуправляемая память подвержена фрагментации: определенные шаблоны распределения оставляют дыры во всей памяти, и хотя общего объема свободной памяти достаточно для нового распределения, новое распределение может быть больше, чем самая большая дыра.
Сборщик мусора избегает фрагментации, сжимая память каждый раз, когда выполняет распределение: он перемещает объекты в памяти рядом друг с другом, оставляя большую дыру в конце. Последующее выделение может быть быстрым из-за этого: распределителю выделенной памяти не нужно просматривать список дыр, но он может идти прямо до конца кучи. [1]
Не беспокойтесь об использовании памяти, если вы не выделяете много памяти.
[1] Это не относится к куче, используемой для больших объектов (больше чем около 85 КБ). Куча больших объектов работает как обычная куча malloc
/ free
.