C# SetProcessWorkingSetSize 减少内存占用 黑科技

编程开发
1237
C#
SetProcessWorkingSetSize
内存占用
内存性能

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  
}

该方法只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用 所以慎用,自身代码优化好才是王道。

C#控制台程序右上角的关闭按钮怎么屏蔽
使用C#为MP3文件添加封面、专辑和歌手信息的实例教程
多线程使用Image.FromFile 加载图片时出现图片文件被锁定无法更新
C# 实现对windows防火墙的常规操作管理白名单、黑名单
C# 将数组分组进行平均拆分成多个数组 代码如何实现
vs编译时报错 不安全代码只会在使用 /unsafe 编译的情况下出现
.NET5框架下使用HttpListener类实现http接口监听替代OWIN自我寄宿
C# 二维码生成源码|使用ThoughtWorks.QRCode 实现根据文本内容生成二维码
 C# 实现 Rsa字符串非对称加密简单例子
VS错误提示无法嵌入互操作类型“IWshShell_ClassClass”,请改用适用的接口的解决方法
C# 操作DOS添加端口防火墙名单
C#实现查询某个端口是被哪个程序进程占用
暂无相关内容...
基于.NET4.0实现的目录文件新增监视并自动化上传至ftp完整流程工具源码
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
.NET5+C# WPF实现图片添加倾斜文字平铺水印工具源码
C#基于OpenCVSharp实现图片对比相似度百分比源码下载
C#结合虫洞软件(Wormhole)实现自动登录到手机版百度网盘的流程源码
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删