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

私人字节混淆!

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

Gen 0堆 - 5.8MB
第一代堆 - 2.5MB
第二代堆 - 13.9MB
所有堆中的字节 - 17MB
大对象堆 - 0.7MB
私人字节 - 130MB
工作集 - 150MB

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


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

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


来自Red-Gate:关于“Private Bytes”的一般信息

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

链接地址: http://www.djcxy.com/p/80181.html

上一篇: .net memory usage, what determines private byte size

下一篇: .NET application memory usage concerning private bytes vs peak private bytes