我们的服务器在可用内存上总是非常低。 然而,顶级进程只占用了我们的服务器上可用的一部分内存(具有10GB的内存)。
我运行tasklist来获取所有进程的列表,并加上他们使用的内存总量。 总内存使用量为6GB ,大约1GB的内存“可用”。
除非我错过了一些东西,这意味着大约3GB(10GB的总内存 – 使用6GB – 1GB“可用”)的不足。
我想知道会发生什么事。 每隔一段时间,“自由”记忆就会下降到0,在这一点上,我们经历了减速。
内存pipe理已经是一个复杂的话题,不幸的是,微软公司已经改变了与Windows的不同types的内存的确切定义和条款。 所以相信我,你并不是唯一一个被它迷惑的人。
当您使用任务列表时,任务列表会显示分配给每个进程的工作集 。 工作集是分配给进程的最近触及的物理 RAM页面,并不占用进程可能使用的全部虚拟内存(从某种意义上说,进程只使用虚拟内存,因为物理内存是抽象的进入一个更大的虚拟内存池,并结合其他的虚拟内存来源,如页面文件)。它也不考虑文件caching等。
你的系统永远不应该有太多“空闲”的内存。 这是浪费的内存,是从字面上什么都不做。 当没有需要更多内存的进程时,Windows使用空闲内存来caching文件,直到可用内存回落到零或接近零。
但是这个caching可以很快地重新分配给一个进程,在这个时候,它将成为进程虚拟字节的一部分,并从可用内存中减去。
至于你的减速,你可能会遇到很多事情。 当Windows可用内存不足时,它开始吃掉(或修剪)进程工作集,这可能导致明显的速度下降。
当您谈论这些types的内存时,请使用性能监视器中的说明获取最准确的说明。 (与任务pipe理器相反,任务pipe理器对于某些术语有一些相互矛盾/混淆的术语)。
最后,我强烈build议您观看这个由两部分组成的video系列: http : //channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405