程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> CLR探索系列-Server and Workstation Garbage Collection探索(垃圾回收系列)

CLR探索系列-Server and Workstation Garbage Collection探索(垃圾回收系列)

編輯:關於.NET

CLR中的GC,存在著兩種Mode。Server Mode的GC和Workstation Mode的GC。同時,在有些情況下,還會遇到並發的GC。

Server GC只適合於在多CPU的主機上面使用。這種GC模式,為每一個處理器都獨立的創建一個GC Heap,這樣就可以進行並發的同步的收集。這樣做的好處也是顯而易見的:在相同的時間裡面可以處理更多的用戶請求。切實的帶來性能的成倍提升。同時,這中模式相對於在多處理器下使用並發模式更加的有效。

而Workstation Mode GC,它適合於單處理器的machine。同時它也是默認的GC模式。

這裡,還要說到一種並發式的GC,也就是在多處理器的machine上面配置的是Workstation Mode GC模式的時候GC的操作方式。在多處理器上面的應用程序運行的時候,它可以並發收集,來減少request的等待時間。這種模式,比較適合於有圖形用戶接口的應用程序或者是對實時性要求很高的系統。

對於Server GC的實現,是在MScorSvr.dll裡面的。而對於Workstation GC的實現,是封裝在MsCorWks.dll中的。知道了這些,對於判斷咱電腦上運行的是Server GC還是Wrokstation GC的判斷也比較簡單,用tasklist命令就可以了:

>tasklist /m mscorwks.dll
Image Name            PID     Modules
 OUTLOOK.EXE        3352    mscorwks.dll
mmc.exe               2084    mscorwks.dll
w3wp.exe               3436    mscorwks.dll

或者,也可以到管理工具中查看系統配置。控制面板裡面的管理工具,然後打開Microsoft .NET Framework 2.0 Configuration。查看我的電腦的屬性:

默認情況下的配置,就是使用Wrokstation GC。

另外一個比較特別也比較普遍的使用方式,就是在一個非宿主托管應用程序,也就是一個用戶App,的配置文件裡面,可以手工的增加一個配置節點來改變這個GC的mode:

<configuration>
 <runtime>
  <gcServer enabled="true" />
 </runtime>
</configuration>

這裡,需要特別指出來一下,這裡說明的是非寄宿的應用程序。如果運行的應用程序是Hosted,這個時候,host的對於GC的配置,就會覆蓋這個.config文件裡面關於GC模式的配置。

在配置使用這些模式的時候,如果是單處理器的machine,就使用Workstation GC。如果是多處理器的時候,如果是看中整個系統的吞吐量,就可以使用Server GC。如果是看中整個系統的實時響應特征,則可以選擇並發模式的GC。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved