I have idea about Dispose and Finalize method in .Net as following. Please correct me if I am wrong.
Dispose : Implement IDisposable inferface and remove unused/unmanaged code in Dispose method. Developer needs to call it manually if they want immediate removal or GC will dispose the resources when it is invoked.
Finalize : When GC invoked it will free the unused managed code and if IDisposable is implemented then it will call Dispose method to free up the unmanaged resources(normally).
The question is: When we dispose the resources using Dispose method, memory will be freed immediately and compacted(as GC doing)?