@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The SetProcessWorkingSetSize API !!!!C# Signature: [DllImport("kernel32.dll")] static extern bool SetProcessWorkingSetSize(IntPtr hProcess, UIntPtr dwMinimumWorkingSetSize, UIntPtr dwMaximumWorkingSetSize); !!!!VB.NET Signature: Private Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal hProcess As IntPtr, ByVal dwMinimumWorkingSetSize As Int32, ByVal dwMaximumWorkingSetSize As Int32) As Int32 !!!!User-Defined Types: None. !!!!Notes: None. !!!!Tips & Tricks: Might be better written using int instead of UInt as -1 is a valid value for dwMaximumWorkingSetSize and dwMinimumWorkingSetSize. See Sample Code. !!!!Sample Code: //sample is probably a bad idea, but it will "trim down" the memory footprint of a .Net App (or at least the value reflected in Task Manager). !!!!C# public class MemoryManagement{ [DllImport("kernel32.dll")] public static extern bool SetProcessWorkingSetSize( IntPtr proc, int min, int max ); public void FlushMemory() { GC.Collect() ; GC.WaitForPendingFinalizers() ; if(Environment.OSVersion.Platform == PlatformID.Win32NT) { SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1) ; } } } !!!!VB.NET 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 !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: SetProcessWorkingSetSize@msdn on MSDN
Edit kernel32.SetProce...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.