Use this to clean it up....very,very useful.

VB Code:
  1. Public Class MemoryManagement
  2.  
  3.     Private Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" ( _
  4.   ByVal process As IntPtr, _
  5.   ByVal minimumWorkingSetSize As Integer, _
  6.   ByVal maximumWorkingSetSize As Integer) As Integer
  7.  
  8.     Public Shared Sub FlushMemory()
  9.         GC.Collect()
  10.         GC.WaitForPendingFinalizers()
  11.         If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
  12.             SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
  13.         End If
  14.     End Sub
  15.  
  16. End Class

I found the above on the net because my DataGrid driven application was simply taking up too much memory on the client pc's.

I put this class into my project and call the FlushMemory function after each time a user fills a DataSet....my apps memory usage went from 30,000KB to less than 5,000KB!