SetProcessWorkingSetSize 内存占用 黑科技
使用SetProcessWorkingSetSize函数其实并不能提高内存性能,也不会真实的节省物理内存,反倒是会造成一些意料之外内存错误问题,造成应用程序或者系统运行不稳定,看似可以优化物理内存,但程序运行时将占用内存强制转移虚拟内存中,严重的还会伤硬盘,微软官方也建议在建立进程,线程,内核池的时候,必须要小心的使用这个函数。
当然特殊情况下(需要让内存看起来占用似乎很小的样子,图个心里安慰) 使用方式如下
public static class MemoryHelper { #region 内存回收 ////// 内存回收接口 将内存数据缓存进硬盘 让资源管理器显得占用小 /// /// /// /// /// [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")] private static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); public static void Clear() { try { GC.Collect(); GC.WaitForPendingFinalizers(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); } } catch { } } #endregion }
该方法只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用 所以慎用,自身代码优化好才是王道。