2010-02-26 72 views
2

我正在閱讀由Jeffrey Ricther撰寫的關於MSDN垃圾回收的文章。他提到「如果NextObjPtr超出地址空間區域的末尾,那麼堆已滿並且必須執行收集」爲.NET應用程序分配的最大內存大小是多少?

我想知道這是什麼地址空間區域或什麼是最大值CLR分配給.NET應用程序的內存大小,這些應用程序被完全填充以便GC進入行動?

回答

1

垃圾收集器是世代類型的,其中第0代最初有256 KB,第1代2 MB,第2代有10 MB。但這些只是初始值。根據你的程序的行爲,它們會增長或縮小。

注意,我從J.里氏的書(通過C#CLR,第2版)服用這些值,頁506

在32位操作系統,最大可用虛擬地址空間爲2 GB(3 GB,如果你使用/ 3GB開關啓動,並有一些特定的Windows版本)。其餘的部分由Windows自己保留。

但是這個空間與您的EXE和DLL(包括.NET,但不包括系統DLL)以及JIT編譯器和其餘.NET的必要數據結構共享。所以,它不到2 GB,但你的里程可能會有所不同。

+0

謝謝。我有興趣知道他們可以增長多少? 4GB? – csharpbaby 2010-02-26 09:52:33

+0

我編輯了包含這個答案。 – Timores 2010-02-26 10:20:27

相關問題