A colleague of mine is convinced there is a memory leak in Oracle's odp.net ado.net implementation. He has written a test program to test this theory and is doing the following after calling dispose on each object in order to determine how much memory is being freed:
PerformanceCounter p = new PerformanceCounter("Memory", "Available Bytes");
GC.Collect();
GC.WaitForPendingFinalizers();
float mem = p.NextValue();
The resulting performance value is then compared with a value retrieved prior to disposing of the object. Will this produce accurate results?