Dispose() has nothing for working with memory under normal circumstances. It does not free memory, does not remove an object from the collection, and does not call the garbage collector. Instead, the goal of .Dispose() is to clear resources without memory: database connections, sockets, device descriptors, gdi descriptors, etc.
The only way that can help you fix the memory problem is to use custom controls, each of which relies on code in an unmanaged (non.Net) dll.
Joel Coehoorn
source share