2012-07-18 36 views
4

私有字节混淆!.net内存使用情况,决定私有字节的大小

当前正在使用ANTS分析器分析C#.NET应用程序的内存使用情况。以下是我们的调查结果,在启动后可以在屏幕上看到主窗体。没有使用其他功能。

根0堆 - 5.8MB
创1堆 - 2.5MB
第2个堆 - 13.9MB
字节中的所有堆 - 17MB
大对象堆 - 0.7MB
专用字节 - 130MB
Working Set - 150MB

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

回答

0

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

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