我们的服务器可用内存总是很低。然而,顶级进程只占用了我们服务器( 10 GB内存)上应该可用的一部分。
我跑去tasklist
获取所有进程的列表,并将它们使用的内存总量相加。总内存使用量为6GB,“可用”内存约为1GB。
除非我遗漏了什么,否则这意味着大约 3GB 的内存不足(10GB 总内存 - 6 GB 已用 - 1 GB“可用”)。
我想知道会发生什么。每隔一段时间,“空闲”内存就会下降到 0,此时我们会遇到速度减慢的情况。
我们的服务器可用内存总是很低。然而,顶级进程只占用了我们服务器( 10 GB内存)上应该可用的一部分。
我跑去tasklist
获取所有进程的列表,并将它们使用的内存总量相加。总内存使用量为6GB,“可用”内存约为1GB。
除非我遗漏了什么,否则这意味着大约 3GB 的内存不足(10GB 总内存 - 6 GB 已用 - 1 GB“可用”)。
我想知道会发生什么。每隔一段时间,“空闲”内存就会下降到 0,此时我们会遇到速度减慢的情况。
内存管理已经是一个复杂的话题,不幸的是,微软几乎在每次发布 Windows 时都更改了关于不同类型内存的确切定义和术语。所以请相信我,您不是唯一对此感到困惑的人。
当您使用任务列表时,任务列表会向您显示分配给每个进程的工作集。工作集是分配给进程的最近接触的 RAM物理页面,它不占进程可能使用的所有虚拟内存总量(从某种意义上说,进程只使用虚拟内存,因为物理内存是抽象的进入更大的虚拟内存池并与其他虚拟内存源(如页面文件)结合。)它也不考虑文件缓存等。
你的系统上永远不应该有太多的“空闲”内存。那是浪费的 RAM,实际上什么都不做。当没有进程需要更多内存时,Windows 会使用空闲内存来缓存文件,直到空闲内存回落到零或接近零。
但是该缓存可以非常快速地重新分配给一个进程,此时它将成为该进程虚拟字节的一部分并从可用内存中减去。
至于你的减速,你可能会经历很多事情。当 Windows 的可用内存不足时,它会开始消耗(或修剪)进程工作集,这可能会导致速度明显下降。
当您谈论这些类型的内存时,请使用性能监视器中的描述来获得最准确的描述。(与任务管理器相反,它对某些术语有一些冲突/混淆的术语。)
最后,我强烈建议您观看这个由两部分组成的系列视频:http ://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405