首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

CLR (Common Language Runtime) 深度解析:架構、管理執行、記憶體、JIT、版本控制與安全性

     編輯:關於C#

CLR 核心優勢

  • 跨語言整合與例外處理
  • 自動記憶體管理(GC)
  • 強化安全性(CAS)
  • 版本控制與並存執行
  • 簡化元件互通模型

可管理程式碼

針對 CLR 編譯的程式碼稱為可管理程式碼,享有上述服務。編譯器需產生中繼資料(型別、成員、參考資訊),與 IL 碼共同封裝在 PE 檔中。

執行流程

  1. 原始碼 → 編譯器 → IL (MSIL) + 中繼資料
  2. 執行時 → JIT 編譯器 將 IL 轉為原生機器碼
  3. CLR 載入類別、配置物件、解析方法呼叫、強制安全性

自動記憶體管理:垃圾收集器 (GC)

  • 所有物件配置於受控堆疊。
  • 採用代機制:第 0 代(新物件)、第 1 代、第 2 代(長壽物件)。
  • 回收觸發:堆疊空間不足 → GC 掃描特定代 → 標記-壓縮 → 釋放記憶體。
  • 消除記憶體洩漏、野指標、雙重釋放等經典錯誤。

JIT 編譯器三種模式

編譯器特性
Standard JIT (預設)執行時編譯、資料流分析、最佳化
PreJIT (Ngen)安裝時預先編譯全組件,啟動較快
EconoJIT低最佳化、編譯極快、適用資源受限裝置

管理工具:jitman.exe

版本控制與部署

  • 組件 = 部署單元(類型 + 資源 + IL + 中繼資料)。
  • 私有組件:僅供單一應用程式使用,複製即部署(XCOPY)。
  • 共用組件:強式名稱、GAC、版本策略、發行者原則。
  • 解決「DLL Hell」:中繼資料內建相依版本、並存執行、隔離儲存。

安全性模型

  • 程式碼存取安全 (CAS):依據證據(區域、強式名稱、簽署)授予權限集。
  • 角色型安全:Windows 身分識別整合。
  • 預設:網路下載程式碼受限(不可存取本機檔案/登錄表)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved