如何知道哪个应用程序正在使用内存?

在SQL Server,TFS和其他工具的2008 R2服务器上,我有以下进程列表和内存消耗(通过进程资源pipe理器报告):

在这里输入图像说明

正如你所看到的,系统消耗3.6Gb,但是进程列表只显示了一个大的进程(第一个[SQL Server])小于500Mb,而其他进程很小,所以我不知道谁正在采取几乎所有的的服务器的内存。 任何想法如何找出罪魁祸首?

操作系统不在乎,你也不应该。 操作系统没有内存压力,它有500MB的免费。 所以它根本不关心如何使用内存。

它唯一能做的就是投资CPU来回收内存。 但是接下来会发生两件事情之一:

  1. 那内存不会被使用。 这会使得它完全免费。 而这是最可能的结果,因为500MB已经没有用了。 拥有更多的自由记忆对性能影响。

  2. 该内存将被使用。 在这种情况下,使其免费的努力将再次成为完全的浪费,因为它只能被撤销。

现代操作系统只有在没有其他select的情况下才能使内存空闲。 这是他们可以用内存做的最糟糕的事情,因为它需要他们做额外的工作来利用这些内存。 他们可以更容易地将内存直接从一个用户转移到另一个用户,而不需要浪费额外的浪费。

只是在做最后的事。 操作系统没有必要回收它,因为这个内存最有可能的下一个使用是之前已经做的,而且它已经在那里 – 免费的。

也就是说, RAMMap会告诉你。 但是,在没有内存压力的机器上分析操作系统的内存使用是毫无意义的。