2012-07-18 34 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