内存使用情况不仅仅是显示一个或两个数字那么简单。我建议您查看马克·拉辛诺维奇的优秀文章,了解Windows中不同类型计数器的信息。
.NET会让事情变得更加复杂。.NET进程只是另一个Windows进程,因此它显然拥有所有常规指标,但除此之外,CLR还充当托管应用程序的内存管理器。因此,根据不同的视角,这些数字将有所不同。
CLR有效地代表.NET应用程序分配和释放虚拟内存大块,并将需要的内存位分配给应用程序。因此,尽管您的应用程序在某一时刻可能只使用了很少的内存,但该内存可能已经或者未释放回操作系统。
此外,CLR本身使用内存来加载IL、将IL编译为本机代码、存储所有类型信息等等。所有这些都增加了进程的内存占用量。
如果您想知道托管应用程序用于数据的内存量,则Bytes in all heaps计数器很有用。Private bytes可以作为应用程序在进程级别上内存使用的粗略估计。
您还可以查看以下相关问题:
如果您正在使用VS 2010,您可以使用Visual Studio 2010 Profiler。这个工具可以为您创建非常有用的报告。
那么,“我的C#应用程序实际使用的内存”是什么呢?
由于虚拟内存和Windows以及CLR中的(几个)内存管理层,这是一个相当复杂的问题。
从您提到的来源来看,CLR分析器将为您提供最详细的分解,我认为这是最准确的答案。
但是没有“单一数字”答案,回答应用程序A是否比B使用更多或更少的内存可能是不可能的。
那么您真正想知道什么?您有要解决的具体性能问题吗?