Windows 2008 r2 内存损耗 不见了

 成都seo   2019-03-26 08:43   102 人阅读  0 条评论
摘要:

情景描述:1.Windows 2008 R2 服务器 32G内存,C#语言编写的文件操作类,每天进行千万级数量的文件读写操作,文件大小本身不大,200KB以内。2.文件操作类 编写合法,流、对象 该关闭的都关闭了。现象:1. 内存占用会慢慢增加,但并不是该程序进程占用,任务管理器中所有进行占用内存合计才5G不到。2.但可用内存从20G-10G--8G--5G--3G--5G---7G来回的变动,但永远回不到20G.3.最终徘徊在5G左右。原理:1.Windows 2008 系统Bug,文件读写时

情景描述:


1.Windows 2008 R2 服务器 32G内存,C#语言编写的文件操作类,每天进行千万级数量的文件读写操作,文件大小本身不大,200KB以内。


2.文件操作类 编写合法,流、对象 该关闭的都关闭了。


现象:


1. 内存占用会慢慢增加,但并不是该程序进程占用,任务管理器中所有进行占用内存合计才5G不到。


2.但可用内存从20G-10G--8G--5G--3G--5G---7G来回的变动,但永远回不到20G.


3.最终徘徊在5G左右。


原理:


1.Windows 2008 系统Bug,文件读写时会把硬盘资源移至缓存(内存),加快读写速度。


2.但这个缓存没有过期时间,没有缓存大小上限。


3.导致缓存(内存)越来越大,可用内存越来越少。


4.直至服务器重启,缓存清空。


解决方法:


1.下载Windows 2008的补丁。下载地址: http://www.microsoft.com/en-us/download/details.aspx?id=9258 


2.具体设置步骤如下:


3.解压后根据不同系统版本中对应的DynCache.exe文件复制到C:\windows\system32中。


4. 以管理员身份打开命令提示符,执行如下命令添加服务:

      sc create DynCache binPath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"


5. 回到DynCache文件夹,找到DynCache.reg的注册表文件导入。


6. 打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters


7. 右侧找到MaxSystemCacheMBytes,双击它,这里我们选择“十进制”,在数值里输入要限制最大的缓存数(单位是MB),输入800就是限制缓存最大为800MB,输入0为不限制。


8. 到服务中启动DynCache服务。

注:下载的dyncache解压出来是有多几个版本可选的,请选择retail amd64的版本,不要选择ia64(ia64表示安腾的64位处理器版本)。


9.重启服务器。


本文地址:http://www.iisya.com/Stationmaster/613.html
版权声明:本文为原创文章,版权归 略懂SEO博客 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?