.NET内存使用情况,是什么决定了私有字节大小

4

困惑于“私有字节”!

我们正在使用ANTS性能分析器分析C# .NET应用程序的内存使用情况。以下是我们在主窗体可见的启动后得出的结果。没有使用其他功能。

Gen 0 Heap - 5.8MB
Gen 1 Heap - 2.5MB
Gen 2 Heap - 13.9MB
所有堆中的字节数 - 17MB
大对象堆 - 0.7MB
私有字节 - 130MB
工作集 - 150MB

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

2个回答

1

这就是问题所在...如果私有字节包括空闲空间,那么是什么决定了它的总大小呢? - paligap

1

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

您可以使用!dumpheap -stat来获取CLR内存使用情况的详细信息。请参见CLR Memory Leak


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接