[問題解決]ASP.NET出現的System.OutOfMemoryException問題

  • 6781
  • 0
  • C#
  • 2018-01-27

摘要:[Q&A]ASP.NET出現的System.OutOfMemoryException問題

最近將舊網站移到全新的主機上面,發現網站執行一段時間偶爾會出現System.OutOfMemoryException

 

(不知道那裡把記憶體耗盡的...),還導致網站無法對外服務,在請教谷歌大神後,

 

主要原因是在Windows Server中預設的GC(Garbage Collection)機制為Server Mode(伺服器模式):

 

一顆CPU核心就分配一個GC Heap(堆積),如果為多核心CPU則就分配多個GC Heap,

 

這樣子就容易造成記憶體不足,解決的方式如下:

 

  • 1.打開%WINDIR%\Microsoft.NET\Framework\v2.0.50727\Aspnet.config 檔案,另外如果是.NET 1.1 則要修改 %WINDIR%\Microsoft.NET\Framework\v1.1.4322\Aspnet.config檔案。
  • 2.只需在<runtime>...</runtime>中加入<gcServer enabled="false" />即可啓動GC Heap Workstation Mode(工作站模式),簡單來說就是多核心CPU使用同一個GC Heap以節省記憶體。

 

以上就是這麼簡單,就可以擺脫不定時發生「網站無法對外服務」的窘境!

 

Ref:

解決 ASP.NET 中 System.OutOfMemoryException 的問題