Windows Server2008 R2 内存占用问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows Server2008 R2 内存占用问题相关的知识,希望对你有一定的参考价值。

服务器用的是Windows Server 2008 R2 系统。有16G内存
可是,开机后内存占用就是15.8G了,怎么回事。。。
打开程序也不算慢,任务管理器里,看到内存占用最大的,也就几十M,那15G的内存到哪里去了呢?
下图是任务管理器的截图:

你可以通过top直接查看,你会发现和你用这资源监视器看到的数据时一样的。这个现象还是在你用了一两周后发现的对不对。
而实际上:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时,不会释放其占用内存。就算占用内存的程序已经被关闭了,该程序所占用的内存还是用来做缓存使用,所以你用资源监视器查看时还是看到被使用很多内存对于开启过的程序、或是读取刚存取过得数据会比较快。
用top查看时,你用used -/+ buffers/cache 才是实际使用的内存追问

我这是windows系统,可以用top查看?????

追答

不行,i必须是linux系统,你服务器还专门安装个win。这个你不用管它,只要它运行速度没有变慢,是没用问题的,是内存分配机制的问题,这是让你再次打开之前开过得应用更快

参考技术A 这个应该不是病毒 是你的启动项和服务项太多了 你可以使用腾讯电脑管家的垃圾清理和电脑加速功能优化一下, 优化完成后记得重启电脑, 这样就没事了
建议看加两个内存条。平时可以用360进程管理器关闭一些用不到的进程或用鲁大师不时清理内存。追问

这是16G的服务器,没启动什么程序的。看任务管理器就知道了。
最多的sqlserver才占用400M。也没连因特网。

追答

有恢复的时候吗

追问

没有,开机几天都没有

没有,开机几天都没有

追答

哦那没事的win7也出现过开机内存高只要不卡没事用吧

参考技术B 你应该查看专用内存,而不是提交内存。

Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致

系统环境:
Windows Server 2008 R2 + Sql Server 2008 R2
 
问题描述:
Windows Server 2008 R2系统内存占用率过大,而在任务管理器中各进程内存占用总和都远不到此占用率。
相关现象:
1. 内存占用率90%以上
2. 任务管理器中所有进程内存和较低,远不到90%,有二十多G的内存偏差
 
分析过程:
 
  1. 首先怀疑SQL Server内存占用,但是SQL Server设置了最大内存,且任务管理器中显示的内存占比并没有达到很高,排除此原因
  2. 用RamMap工具查看内存的详细使用情况,发现图元文件(Metafile)占用了二十多G的内存,应该与此有关
 
解决方法:利用RamMap的“清空系统工作集”功能,可以释放内存。
 

 

 

 

 

图元文件(Metafile):
     Metafile可以理解为系统缓存,Windows server 2008系统中,比如存在大量的文件拷贝等磁盘io操作,系统会自动将其缓存到内存中,这部分被占用的内存在任务管理器的中未体现出来的,所以用户会认为系统的内存占用异常。同时,MetaFile默认是没有限制的,所以系统会无限制占用内存。 但是对于Windows 2012之后,操作系统会自动限制系统缓存的上限从而避免物理内存的耗尽。
    看了图元文件的解释后,发现前两天一直在做转移文件的操作,几百G的大量小文件在不同磁盘中转移,从而导致内存占用过高,符合此解释。至此,问题调查清楚。
 
如下, 是微软官方Blog中介绍修改注册表来限制动态缓存的方法:
Microsoft Windows Dynamic Cache的更新程序,用户可以下载后添加到服务中,通过修改注册表来限制动态缓存的最大值,比如设置上限为200M等,这样系统就可以把作为缓存使用的内存设置了上限值。
具体设置步骤如下:
1. 解压后根据不同系统版本中对应的DynCache.exe文件复制到C:\\windows\\system32中。
2. 以管理员身份打开命令提示符,执行如下命令添加服务:
      sc create DynCache binPath= %SystemRoot%\\System32\\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
3. 回到DynCache文件夹,找到DynCache.reg的注册表文件导入。
4. 打开注册表,找到HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\DynCache\\Parameters
5. 右侧找到MaxSystemCacheMBytes,双击它,这里我们选择“十进制”,在数值里输入要限制最大的缓存数(单位是MB),输入800就是限制缓存最大为800MB,输入0为不限制。
6. 到服务中启动DynCache服务。
注:下载的dyncache解压出来是有多几个版本可选的,请选择retail amd64的版本,不要选择ia64(ia64表示安腾的64位处理器版本)。
 
 

以上是关于Windows Server2008 R2 内存占用问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2占用内存越来越大解决方法

Windows Server2008 R2 内存占用问题

windows server2012R2 64位系统中安装SQL server2008 32位最大使用内存是多少?

如何获得Windows Server 2008 R2中的总虚拟内存

windows 2008 R2 如何通过windows server backup 执行增量备份?

Windows Server2008 R2服务器 内存占用高,但找不到是哪?