Memory Usage Reduces On Application Minimize

Everseen memory usage of a program go down as soon as it’s minimized. Well how to achieve this programmatically(VB.NET and C#).

Using the anyone of the following API function we can reduce memory usage.
SetProcessWorkingSetSize( GetCurrentProcess(), -1, -1 );
or
EmptyWorkingSet( GetCurrentProcess() );

Sample Code:

C#:
public class MemoryManagement
{

[DllImport("kernel32.dll")]
public static extern bool SetProcessWorkingSetSize( IntPtr proc, int min, int max );

public void ReleaseMemory()
{

GC.Collect() ;
GC.WaitForPendingFinalizers() ;
if(Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1) ;
}

}

}
VB.NET :

public class MemoryManagement

Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean

Friend Sub ReleaseMemory()

Try
GC.Collect()
GC.WaitForPendingFinalizers()
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1)
End If

Catch

End Try
End Sub

end class

1 comment:

Anonymous said...

Hi There,

Is there any disadvantage or drobag for this code..

Thanks
U