The estimate done using TaskManager is so unreliable that is should not be taken in consideration. What it shows is not a really allocated memory. If you terminate some process, even unmanaged, all memory is reclaimed, period.
Also, you should not really do anything with GC. Just don't.
It does not mean that with manages systems memory leaks are impossible. They are quite possible, but understanding of it requires more accurate consideration of what a memory leak is; this is not as trivial. In managed system, you are protected from accidental memory leaks, but you can easily create quite real design-level memory leaks. For further detail, please see my past answers:
Garbage collectotion takes care of all the memory management[
^],
deferring varirable inside the loop can cuase memory leak?[
^],
Best way to get rid of a public static List Causing an Out of Memory[
^],
Memory management in MDI forms[
^].
—SA