Dot-Net

我可以(並且我曾經想要)在.net 中設置最大堆大小嗎?

  • November 19, 2008

來自 java 背景,我習慣的一件事是告訴 JVM 最大堆大小應該是多少。如果正在執行的程序嘗試吞下的資源超出了允許範圍,而垃圾收集器無法釋放更多資源,則會拋出 OutOfMemoryError 並且一切都會發生。所以設置最大堆大小在 Java 中很重要。

這適用於.net嗎? 你能設置堆大小限制嗎?CLR 是否會不斷增長其堆,直到達到機器的物理極限?或者,由於某種微妙的原因,我的 Java 閃爍器阻止我看到,這在 .net 中不是問題嗎?

除非您自己在程序中託管 CLR,否則您無法在 .Net 中設置最大堆大小。

編輯:要控制 CLR 的記憶體分配,包括最大堆大小,您需要使用託管 api 來託管 clr 並專門使用“記憶體管理器介面”,一些入門資訊可以在這裡找到MSDN 雜誌,CLR Inside Out 列: CLR 託管 API

編輯:回答你的問題,你為什麼要控制記憶體分配或特別是最大堆大小,你通常不想,但如果你正在編寫一個像 SQL Server 或 IIS 或一些實時應用程序這樣的應用程序那麼你就有一個很好的理由來控制記憶體,特別是避免分頁,否則 CLR 本身和作業系統已經為你做了很好的工作,剩下的就是確保你的應用程序使用最少的資源事情進展順利。

引用自:https://stackoverflow.com/questions/301393