| 特性 | Workstation GC (預設) | Server GC |
|---|---|---|
| 適用硬體 | 單核 / 多核均可 | 僅多核/多 CPU |
| Heap 結構 | 單一 GC Heap | 每個邏輯處理器獨立一個 GC Heap |
| 執行緒模型 | 單一 GC 執行緒(或並發模式下專用背景執行緒) | 多執行緒並行收集,每個 Heap 對應一個專用 GC 執行緒 |
| 併發模式 | 可選啟用 Concurrent GC | 不支援併發模式(本質已並行) |
| 核心優勢 | 低延遲、適合 UI 應用 | 高吞吐量、極致擴展性 |
| 實現 DLL | mscorwks.dll (.NET 2.0/3.5) / clr.dll (4.0+) | mscorsvr.dll (2.0/3.5) / clr.dll (4.0+ 統一) |
tasklist 命令檢查載入的 DLL> tasklist /m mscorwks.dll
Image Name PID Modules
OUTLOOK.EXE 3352 mscorwks.dll
mmc.exe 2084 mscorwks.dll
w3wp.exe 3436 mscorwks.dll
mscorwks.dll → Workstation GCmscorsvr.dll → Server GC (.NET 2.0/3.5)clr.dll,需用其他方式判斷。控制台 → 管理工具 → Microsoft .NET Framework 2.0/4.x Configuration → 我的電腦 → 內容 → GC 設定頁面。預設顯示 Workstation GC。
<gcServer>非寄宿應用程式(普通 EXE)可在 app.config 指定:
<configuration>
<runtime>
<gcServer enabled="true" />
</runtime>
</configuration>
┌─────────────────────┐
│ 單核機器? │
└──────────┬──────────┘
│
┌────────────────┴────────────────┐
▼ ▼
是 ───► 唯一選擇:Workstation GC 否
│
┌────────────────┴────────────────┐
▼ ▼
追求吞吐量? 追求低延遲/即時響應?
│ │
▼ ▼
是 ───► Server GC 是 ───► Workstation + Concurrent GC
│ │
▼ ▼
否 ───► Workstation GC 否 ───► Workstation GC (預設)