在我的开发框中,我的SQL Server配置了一个很高的最大内存量(8GB为16 8GB)。这是许多开发任务所必需的。
但有时我想找回我的记忆。我不想让8GB永久消耗掉。
让SQL Server突然将所有内存释放到操作系统的好方法是什么?
DBCC DROPCLEANBUFFERS不会这么做的。它只是将干净的缓冲区标记为可用。
重新启动Server是一个问题,因为这会导致运行1分钟的数据库恢复,这是由于这个bug/特性:停止服务器服务会导致数据库不干净地关闭 (请为该连接项投票;似乎是一个令人震惊的错误)。
发布于 2015-09-17 05:32:27
但有时我想找回我的记忆。我不想让8GB永久消耗掉。让SQL Server突然将所有内存释放到操作系统的好方法是什么?DBCC DROPCLEANBUFFERS不这样做。它只是将干净的缓冲区标记为可用。
因为您说要释放DEV机器上的内存,所以您可以使用下面的查询
DBCC FREESYSTEMCACHE ('ALL')
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE但是请注意上面的命令won't cause SQL Server process to release memory committed it would just clear caches。这就是你正在经历的。
在运行上述查询之后,您可以将Server服务器内存更改为较低的值(在您的情况下可能为4-5G ),这将迫使server进程释放内存,从而再次降低内存消耗--我建议将此作为图像中的机器是DEV机器。更改最大服务器内存不需要重新启动。另一件事是重新启动Server服务,这肯定会清除缓存,并释放Server进程所持有的内存。但是在重新启动Server之后,它可能会在一段时间后收回所有内存。
https://dba.stackexchange.com/questions/115270
复制相似问题