确定如何在Windows Server 2008中使用所有内存

我有一个Windows Server 2008系统,有12GB的RAM。

如果我列出任务pipe理器中的所有进程和SUM()每个进程(工作集,内存(私人工作集),提交大小…)的内存,我永远不会超过4-5GB应该是“正在使用”。 但是,任务pipe理器通过“性能”选项卡报告此服务器已使用11GB

我无法确定所有使用的RAM在哪里。 它似乎不是系统caching,但我不能确定。

这可能是一个设备的内存泄漏,但我正在努力找出哪一个。 服务器的内存不断增多,最终迫使我们重新启动设备清除它。

我一直在阅读如何RAM分配在Windows Server上工作:

  • RAM,虚拟内存,页面文件和所有的东西: http : //support.microsoft.com/kb/2267427
  • 什么是最好的衡量方式? http://www.zdnet.com/blog/bott/windows-7-memory-usage-whats-the-best-way-to-measure/1786
  • 在Windows中configuration文件系统caching: http : //smallvoid.com/article/winnt-system-cache.html

但是我担心我现在没有任何想法。

Windows内存pipe理是一个巨大的话题。 整本书都可以写在这个话题上。 我要做的第一件事就是观看video系列“Windows内存pipe理之谜”第一部分和第二部分,在MSDN频道9:

http://channel9.msdn.com/Events/TechEd/Europe/2010/WCL401

http://channel9.msdn.com/Events/TechEd/Europe/2010/WCL402

(这次会议有北美和欧洲的版本,他在美国的TechEd和TechEd Europe上都进行了这些谈话。)

任务pipe理器和资源监视器都可以,对于99%的Windows用户来说已经足够了,但是对于那些处于最后1%的人来说,Sysinternals工具确实非常出色,并且希望尽可能详细地查看。

从RAMMap开始。 你可以在\\ live.sysinternals.com \ Tools \中find它。 然后为了更好地放大特定进程如何使用内存,请使用VMMap。

我们不要试图去定义所有这些不同types的记忆是什么意思。 你的问题是你害怕内存泄漏。 您的症状是您的服务器由于内存不足而无法使用,并且您不得不重新启动它。

只要正常运行,就不需要定期重启服务器。 理想情况下,它应该是一个自我维护的系统,只需要从修补和configuration更改重新启动。 所以是的,我想说你可能有一个问题,假设你有一个很好的理由重启你的服务器,比如它实际上变得不稳定/不可用。 不只是因为任务pipe理器告诉你几乎所有的RAM都在使用中。 现代版本的Windows主动caching东西,并将文件和数据映射到RAM中,即使您没有正确使用它们。 请注意任务pipe理器中的“空闲”内存和“可用”内存之间的区别。

但是,我不确定你的意思是“这可能是一个设备的内存泄漏”。 你是什​​么意思装置? 我以为我们在这里谈论Windows服务器?

您可能在几种不同types的内存中存在内存泄漏,如进程的私有内存或共享内存,甚至可能是内存池 – 分页或非分页。 在任何这些情况下,使用我提到的那些工具,并观察这些不同的内存类别,这些类别的内存使用量不断增加,并且永远不会回落。 那将是一个泄漏。

希望这可以帮助。

任务pipe理器在默认情况下不会显示每个进程的实际内存使用情况; 但你可以让它显示更多的信息,这是更准确的。

看这里:

http://windows.microsoft.com/en-US/windows7/What-do-the-Task-Manager-memory-columns-mean