Since .net is managed code, and does not allow applications to manage allocation and deallocation of memory, garbage collection runs a low priority thread, which will replenish the unused allocated memory for reuse. An application can perform steps to indicate that something can be garbage collected, but cannot, force garbage collector to run; Correct me if I am wrong.