我有一个Windows 7 64位安装在运行SQL Server 2008 R2和IIS7的虚拟机。 服务器本身有12个内存,并配备双核心intel Xeon @ 2.50 GHz。
这个问题(我不太确定它是否有问题)是任务pipe理器总是显示8.50 GB正在使用中,而没有进程占用这个内存量。

我看看这个问题,这是在谈论的SQLlocking页面分配内存。 我发现,虽然这些值是正常的 – 约85 MB。 这是该命令的屏幕截图
select * from sys.dms_os_process_memorys

不过基于上面的图片,我也看到了大约8.50 GB的total_virtual_space_kb 。 最后,我运行了RAMMap,它显示我有大约8.50 Gb被“locking的驱动程序”使用 。 在其他地方,有人build议VMWare使用这个“驱动程序locking”内存。
我有几个问题:
1)这个内存是否真的被消耗掉了,还是会根据需要被释放到另一个进程? 我注意到,服务器明显慢,所以我想知道这是否有什么关系。 而且,我的asp.net进程通常会OutOfMemoryExceptionsexception。
2)谁在分配/使用这个内存? SQL或VMWare?
3)我有办法解决这个问题吗?
任何帮助表示赞赏。
我怀疑这是虚拟机pipe理程序(ESX / i)“气球”驱动程序的结果。 气球驱动程序通过VMware工具工作,从客户操作系统请求一定量的内存,而不在客户操作系统中实际使用它。 这允许pipe理程序在其他地方使用内存。
由于多种原因,气球膨胀通常是一件好事,但对于MSSQL来说,它往往会有点麻烦,因为SQL引擎本身就擅长内存pipe理。
这里有一些更多的信息,这可能比我更好地解释:
请检查所有虚拟机的内存预留设置。 它应该设置为无限制或设置在您的服务器上的最大内存。
转到vm设置,选项卡资源。 select内存并检查限制。
SQL Server必须首先限制内存使用情况。 查看你的SQL服务器真正需要多less内存使用perfmon的最好方法是:
在减less最大服务器内存值之前,请使用性能监视器在负载下检查SQLServer:Buffer Manager性能对象,并记下被盗页面和保留页面计数器的当前值。 这些计数器将内存报告为8K页的数量。 最大服务器内存应设置为高于这两个值的总和以避免内存不足错误。 最低合理的最大服务器内存设置(以MB为单位)的近似值是([被盗页面] + [保留页面])/ 100
来源:TechNet( http://technet.microsoft.com/en-gb/library/ms178067 ( SQL.90 ) .aspx )