我在带有 SQL、TFS 和其他一些工具的 2008 R2 服务器上有以下进程列表和内存消耗(通过进程资源管理器报告):
如您所见,系统消耗了 3.6 Gb,但进程列表只显示了一个大进程(第一个 [SQL Server])占用了不到 500 Mb,而其他的都非常小,所以我不知道是谁占用了几乎所有的内存服务器的内存。关于如何找出罪魁祸首的任何想法?
我在带有 SQL、TFS 和其他一些工具的 2008 R2 服务器上有以下进程列表和内存消耗(通过进程资源管理器报告):
如您所见,系统消耗了 3.6 Gb,但进程列表只显示了一个大进程(第一个 [SQL Server])占用了不到 500 Mb,而其他的都非常小,所以我不知道是谁占用了几乎所有的内存服务器的内存。关于如何找出罪魁祸首的任何想法?
操作系统不关心,你也不应该关心。操作系统没有内存压力,它有 500MB 的空闲空间。所以它根本不关心内存是如何使用的。
它唯一能做的就是投入 CPU 来回收内存。但是随后会发生以下两种情况之一:
那块内存无论如何也不会被使用。这将使使其免费的努力完全浪费。这是最有可能的结果,因为 500MB 已经闲置。无论如何,拥有更多的可用内存对性能没有影响。
该内存将被使用。在这种情况下,让它免费的努力将再次完全浪费,因为它只能被撤销。
现代操作系统只有在别无选择时才会释放内存。这是他们可以对内存做的最糟糕的事情,因为这需要他们做额外的工作才能使用该内存。他们可以更轻松地将内存直接从一种用途转移到另一种用途,而无需增加释放内存的浪费中间步骤。
它只是在做它最后碰巧在做的事情。操作系统不需要回收它,因为该内存最有可能的下一次使用是它之前已经在做的任何事情,而且它已经在那里了——免费的。
也就是说,RAMMap会告诉您。但是在没有内存压力的机器上分析操作系统内存使用情况是完全没有意义的。