任务管理器和资源监视器都坚持使用7.5GB的RAM.但是,进程(内存专用字节)下的内存列表不会相加.我确实已经检查了所有用户的Show Processes并手动添加了我想出的大约3.5GB内存的数字.
我还查看了SysInternals Process Explorer的最新副本.私有字节或工作集都没有使用超过大约3.5GB的RAM.
这是怎么回事?
=====
更新:
我反弹服务器,看看内存利用率会发生什么.在启动和常规操作开始后,它使用3GB的RAM. 18小时后,它恢复到6.8GB的使用率,没有迹象表明正在使用额外的3.5GB左右的RAM.
以下是资源监视器和任务管理器的屏幕截图的链接:
更新2:
好吧,我相信我找到了问题所在.当我从我的sql server中分离出一个较大的数据库时,显示为“正在使用”的ram数量急剧下降.内存专用字节数几乎没有移动.所以我猜测sql服务器有一些分配内存的方法,它没有真正显示在任何监视器中.
我进一步创建了一个新的数据库文件,然后从我分离的数据中传输了所有数据.尽管它具有相同的数据,并且相同的事务通过它,但使用的内存仍然很低.也许DB中有一些腐败?我会把它留给DB众神去寻找另一个“问题”;)
http://blogs.msdn.com/psssql/archive/2009/09/11/fun-with-locked-pages-awe-task-manager-and-the-working-set.aspx
其中一个要点(#3)是标题“为什么任务管理器没有显示为sql Server分配的所有内存”
这是一个非常好的解释.最后,没有显示的原因是sql server已经“锁定”了内存中的那些页面.锁定页面不是工作集的一部分,因此它们不会出现在任务管理器中,甚至不会显示为应用程序内存集的一部分.
如果从sys.dm_os_process_memory运行select *,则可以看到locked_page_allocations_kb字段,该字段将告诉您sql server在这些页面中分配了多少RAM.