.net内存使用情况,决定私有字节大小的因素

时间:2012-07-18 07:25:54

标签: c# memory-management memory-leaks working-set

被私人字节混淆!

目前正在使用ANTS分析器分析我们的C#.NET应用程序的内存使用情况。以下是我们在启动后使用屏幕上显示的主要表单进行的调查结果。没有使用其他功能。

Gen 0堆 - 5.8MB
第1代堆 - 2.5MB
第2代堆 - 13.9MB
所有堆中的字节数 - 17MB
大物件堆 - 0.7MB
私人字节 - 130MB
工作集 - 150MB

如果所有堆中的字节数仅为17MB,为什么我们有这么大的专用字节分配?是由系统分配的私有字节还是私有字节从0开始扩展,因为它被软件填充?即是私有字节,泡沫实际上可能只是部分使用?如果是这样,是什么决定了它的大小?

2 个答案:

答案 0 :(得分:1)

From Red-Gate: General information about "Private Bytes"

  

专用字节包括.NET堆上的可用空间以及   非托管内存使用情况。

答案 1 :(得分:0)

专用字节是无法与其他进程共享的进程的所有虚拟分配(即,排除代码和内存映射文件)。这将包括所有NT(本机)堆,任何托管堆,堆栈和应用程序(VirtualAlocEx)明确分配的任何内存。

您可以使用!dumpheap -stat详细了解您的CLR内存使用情况。见CLR Memory Leak