免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
快速理解.NET Framework (2)
理解JIT編譯器

    JIT編譯器作為CLR的一個(gè)完整的部分將MSIL代碼編譯成本地代碼并且實(shí)時(shí)執(zhí)行整批代碼。代碼將會(huì)被緩存而下次就會(huì)從緩存中讀取代碼再次編譯執(zhí)行(翻譯不出來)

JIT執(zhí)行進(jìn)程

    CLR類加載器加載MSIL代碼并且將元數(shù)據(jù)加載到內(nèi)存;代碼管理器調(diào)用WinMainDllMain方法。JIT編譯器在其入口方法執(zhí)行之前編譯這個(gè)方法。代碼管理器將對(duì)象放置在內(nèi)存中并控制代碼的執(zhí)行。垃圾收集器實(shí)現(xiàn)對(duì)管理堆的周期性檢查識(shí)別應(yīng)用程序的無效對(duì)象。

    程序執(zhí)行時(shí)類型檢查器確保所有對(duì)象和值以及對(duì)象和值的引用有其合法的類型。類型檢查器也保證代碼的唯一合法操作,否則就拋出異常。代碼在運(yùn)行時(shí)由CLR控制。CLR在以下行為上增強(qiáng)安全性:

  • 像硬盤一樣控制和訪問系統(tǒng)資源
  • 控制和訪問網(wǎng)絡(luò)連接
  • 控制和訪問其他硬件資源
被管理代碼執(zhí)行

    被管理代碼執(zhí)行被認(rèn)為是由CLR執(zhí)行的進(jìn)程,具體有以下幾個(gè)方面:

  • CLR加載MSIL和應(yīng)用元數(shù)據(jù)
  • CLR執(zhí)行本地代碼,
  • CLR提供自動(dòng)內(nèi)存管理
  • 被管理的執(zhí)行也實(shí)現(xiàn)JIT編輯
  • 封裝類型安全,
  • 增強(qiáng)安全性
  • 處理異常

被管理的執(zhí)行進(jìn)程

  • 被管理代碼是自解釋性的代碼,它在.NET框架中給CLR多運(yùn)行時(shí)服務(wù)的信息。
  • 這些信息在PE文件里以元數(shù)據(jù)的形式被存儲(chǔ)在MSIL代碼中。元數(shù)據(jù)信息會(huì)描述代碼包含的類型。
  • 被管理數(shù)據(jù)是由垃圾收集器自動(dòng)被分配和釋放的。被管理代碼能被被管理數(shù)據(jù)理解而非管理數(shù)據(jù)能被被管理理解。(翻的不正確)

內(nèi)存管理

  • 自動(dòng)內(nèi)存管理意味著當(dāng)對(duì)象創(chuàng)建時(shí)不需要編寫代碼分配內(nèi)存或是當(dāng)應(yīng)用程序不需要對(duì)象時(shí)釋放內(nèi)存。
  • 自動(dòng)內(nèi)存管理的進(jìn)程包括下列任務(wù):


?分配內(nèi)存

 

  • 當(dāng)一個(gè)進(jìn)程被初始化時(shí),運(yùn)行時(shí)保留了一個(gè)連續(xù)的地址空間而不為它分配任何存儲(chǔ)空間。
  • 這個(gè)保留的地址空間被叫做托管堆。托管堆在下一個(gè)對(duì)象被放置的地方保留了一個(gè)指針。
  • 當(dāng)一個(gè)應(yīng)用程序使用new操作符創(chuàng)建一個(gè)對(duì)象時(shí),new操作符檢查堆內(nèi)對(duì)象所需的內(nèi)存是否可用。
  • 當(dāng)下一個(gè)對(duì)象創(chuàng)建的時(shí)候,垃圾收集器在托管堆分配內(nèi)存給對(duì)象。
  • 在托管堆分配內(nèi)存給對(duì)象的時(shí)間比分配非托管堆內(nèi)存耗時(shí)要少。
  • 在非托管堆中,指向內(nèi)存的指針在鏈表數(shù)據(jù)結(jié)構(gòu)中維護(hù)。因此,分配內(nèi)存需要通過操縱鏈表,尋找能夠容納它的較大的內(nèi)存塊。(此處原文不全)
  • 與訪問非托管內(nèi)存相比你能更快地訪問托管內(nèi)存的對(duì)象,因?yàn)樵谕泄軆?nèi)存分配時(shí),對(duì)象總是在托管的地址空間中分配。

?釋放內(nèi)存

 

 


?分配內(nèi)存

 

  • 當(dāng)一個(gè)進(jìn)程被初始化時(shí),運(yùn)行時(shí)保留了一個(gè)連續(xù)的地址空間而不為它分配任何存儲(chǔ)空間。
  • 這個(gè)保留的地址空間被叫做托管堆。托管堆在下一個(gè)對(duì)象被放置的地方保留了一個(gè)指針。
  • 當(dāng)一個(gè)應(yīng)用程序使用new操作符創(chuàng)建一個(gè)對(duì)象時(shí),new操作符檢查堆內(nèi)對(duì)象所需的內(nèi)存是否可用。
  • 當(dāng)下一個(gè)對(duì)象創(chuàng)建的時(shí)候,垃圾收集器在托管堆分配內(nèi)存給對(duì)象。
  • 在托管堆分配內(nèi)存給對(duì)象的時(shí)間比分配非托管堆內(nèi)存耗時(shí)要少。
  • 在非托管堆中,指向內(nèi)存的指針在鏈表數(shù)據(jù)結(jié)構(gòu)中維護(hù)。因此,分配內(nèi)存需要通過操縱鏈表,尋找能夠容納它的較大的內(nèi)存塊。(此處原文不全)
  • 與訪問非托管內(nèi)存相比你能更快地訪問托管內(nèi)存的對(duì)象,因?yàn)樵谕泄軆?nèi)存分配時(shí),對(duì)象總是在托管的地址空間中分配。

?釋放內(nèi)存


  • 垃圾收集器周期性地應(yīng)用程序不再需要的對(duì)象中釋放內(nèi)存。
  • 每個(gè)應(yīng)用程序有一組根指針的集合。根指針指向在托管堆存儲(chǔ)位置。每個(gè)根指針或者引用托管堆中的一個(gè)對(duì)象或是被置成空。
  • 一個(gè)應(yīng)用程序的根指針由線程棧上的全局靜態(tài)指針,局部變量和引用對(duì)象參數(shù)組成。
  • JIT編譯器和運(yùn)行時(shí)維護(hù)應(yīng)用程序根指針的列表。垃圾收集器使用這個(gè)列表創(chuàng)建從根指針列表中獲得的在托管堆中的對(duì)象圖表。
  • 當(dāng)垃圾收集器開始運(yùn)行,它把在托管堆中的所有對(duì)象都看作垃圾。
  • 垃圾收集器通過應(yīng)用程序中一些根的集合列表操作,這個(gè)列表定義了在應(yīng)用程序根的集合列表中有相應(yīng)的引用的對(duì)象并對(duì)可獲得的對(duì)象標(biāo)記。
  • 垃圾收集器也把這樣的對(duì)象作為可獲得對(duì)象。(不知道是什么意思)
  • 垃圾收集器認(rèn)為所有托管堆中不可獲得的對(duì)象是垃圾。
  • 垃圾收集器通使用收集進(jìn)程釋放垃圾對(duì)象空間。
  • 垃圾收集器使用內(nèi)存復(fù)制功能來壓縮托管堆中的對(duì)象。
  • 垃圾收集器更新應(yīng)用程序中根的集合列表中的指針,使得指向較早的應(yīng)用程序根指針正確指向?qū)ο蟆?/span>
  • 垃圾收集器使用高度優(yōu)化的機(jī)制完成垃圾收集。它把托管堆中的對(duì)象分為三級(jí):0、1、和2。第0級(jí)包括最近被創(chuàng)建的對(duì)象。
  • 垃圾收集器開始在第0級(jí)收集不可獲得的對(duì)象。接著,垃圾收集器緊縮內(nèi)存并將可獲得對(duì)象提升為第1級(jí)。
  • 幸免于收集進(jìn)程收集的對(duì)象被提升為更高的級(jí)別。
  • 垃圾收集器在第1級(jí)和第2級(jí)搜索不可獲得的對(duì)象,僅當(dāng)通過第0級(jí)對(duì)象的收集進(jìn)程釋放的內(nèi)存不足以創(chuàng)建一個(gè)新的對(duì)象時(shí)。
  • 垃圾收集器為所有應(yīng)用程序創(chuàng)建的托管對(duì)象管理內(nèi)存。
  • 垃圾收集器能通過在對(duì)象等Dispose方法中提供清除代碼來顯式釋放這些系統(tǒng)資源。
  • 我們?cè)趯?duì)象完成工作后需要顯式調(diào)用Dispose方法。

?實(shí)現(xiàn)完成器

  • 完成器進(jìn)程允許一個(gè)對(duì)象在垃圾收集器啟動(dòng)之前完成清理工作。
  • Finalize方法確保了即使客戶沒有顯式調(diào)用Dispose方法,所使用的資源在對(duì)象被垃圾收集時(shí)也會(huì)從內(nèi)存被釋放。
  • 在垃圾收器集進(jìn)行垃圾收集時(shí)識(shí)別對(duì)象是垃圾后,它在釋放內(nèi)存前調(diào)用對(duì)象的Finalize方法。
  • 完成器是包含在對(duì)象收集之前被執(zhí)行的清理代碼的方法。執(zhí)行清理代碼的進(jìn)程被叫做終結(jié)。DisposeFinalize方法被叫做完成器。
  • 對(duì)象的Dispose方法會(huì)釋放所有資源,包括它的父對(duì)象擁有的資源通過調(diào)用父對(duì)象的Dispose方法。
  • 我們有兩個(gè)方法執(zhí)行Dispose方法:
    • 類用戶能夠調(diào)將被銷毀對(duì)象的Dispose方法,或者
    • Finalize方法能在終結(jié)過程中調(diào)用Dispose方法。

 

 


理解
.NET框架的角色

    .NET框架有兩個(gè)組要的組件:公共語言運(yùn)行時(shí)(CLR)和.NET框架類庫。公共語言運(yùn)行時(shí)是.NET框架的基礎(chǔ)。CLR 在運(yùn)行時(shí)管理代碼,提供像內(nèi)存管理,線程管理和remoting之類的核心服務(wù),同時(shí)也加強(qiáng)嚴(yán)格的類型安全和促進(jìn)代碼正確來確保程序的安全性和健壯性(魯棒性)。代碼管理的概念是CLR的基本原則。針對(duì)CLR的代碼被認(rèn)為是可管理的代碼,而不是針對(duì)CLR的代碼則被認(rèn)為是不可管理的代碼。

    類庫是.NET框架的一個(gè)完整的組件, 包括可重用類的面向?qū)ο蠹希刮覀兡苡脕黹_發(fā)應(yīng)用程序包括傳統(tǒng)的命令行或是任何像Windows窗體,ASP. NET Web窗體和新近發(fā)明的XML Web 服務(wù)的Windows服務(wù)這樣的圖形用戶接口(GUI)。

    歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA)標(biāo)準(zhǔn)定義了通用語言規(guī)范(CLS);這加強(qiáng)了軟件開發(fā)語言能夠進(jìn)行互操作。按照CLS編寫的代碼應(yīng)該能和另一個(gè)符合CLS語言的代碼一起編譯。因?yàn)橛煞?/span>CLS語言支持的代碼將會(huì)被編譯成中間語言(IL)代碼。CLR引擎執(zhí)行IL代碼。這保證了符合CLS語言的互用性。微軟.NET框架支持的語言有Microsoft Visual Basic .NET, Microsoft Visual C#, Microsoft Visual C++ .NET, and Microsoft Visual J# .NET.

語言編譯器生成中間語言代碼,叫做微軟中間語言(MSIL),它使不同可互操作的.NET語言編寫程序。
     ECMA標(biāo)準(zhǔn),公共語言架構(gòu)CLI),定義了IL代碼需要執(zhí)行的基礎(chǔ)架構(gòu)的規(guī)范。CLI提供一個(gè)公共類型系統(tǒng)(CTS)和像類型安全,可管理的代碼執(zhí)行和side by side執(zhí)行的服務(wù)。




1.微軟.NET框架的ECMA標(biāo)準(zhǔn)

.NET框架提供基礎(chǔ)架構(gòu)和服務(wù)。CLI規(guī)范.它們包括:
    公共語言運(yùn)行時(shí):

           CLR包括CLI

           CLR也提供.NET應(yīng)用程序的執(zhí)行環(huán)境

    公共類型系統(tǒng):

           提供數(shù)據(jù)類型,值,對(duì)象類型。這使得開發(fā)人員能用不同的語言開發(fā)應(yīng)用程序。.NET語言共享CTS意味著所有在應(yīng)用程序中的類型在CLI類型定義中是一樣的。

      類型安全:

           .NET框架在值和對(duì)象上執(zhí)行操作,因?yàn)?/span>.NET框架需要知道每個(gè)值和對(duì)象的類型并且引用值和對(duì)象類型。

      可管理的代碼執(zhí)行

           .NET框架管理執(zhí)行.NET應(yīng)用程序時(shí)對(duì)象的狀態(tài)。

           .NET框架自動(dòng)分配內(nèi)存并提供來機(jī)收集機(jī)制來重新分配內(nèi)存

      Side-by-side執(zhí)行

           .NET框架通過使用不同版本的裝配器允許同一應(yīng)用程序的不同版本運(yùn)行在同一機(jī)器上。裝配器由IL代碼和元數(shù)據(jù)組成。元數(shù)據(jù)決定應(yīng)用程序的依賴關(guān)系。通過這個(gè),.NET框架運(yùn)行時(shí)能執(zhí)行多種版本裝配器并且解決遺留的開發(fā)環(huán)境的主要問題。那就是DLL HELL


.NET裝配器


2 Side-by-side執(zhí)行

 

 



1.微軟.NET框架的ECMA標(biāo)準(zhǔn)

.NET框架提供基礎(chǔ)架構(gòu)和服務(wù)。CLI規(guī)范.它們包括:
    公共語言運(yùn)行時(shí):

           CLR包括CLI

           CLR也提供.NET應(yīng)用程序的執(zhí)行環(huán)境

    公共類型系統(tǒng):

           提供數(shù)據(jù)類型,值,對(duì)象類型。這使得開發(fā)人員能用不同的語言開發(fā)應(yīng)用程序。.NET語言共享CTS意味著所有在應(yīng)用程序中的類型在CLI類型定義中是一樣的。

      類型安全:

           .NET框架在值和對(duì)象上執(zhí)行操作,因?yàn)?/span>.NET框架需要知道每個(gè)值和對(duì)象的類型并且引用值和對(duì)象類型。

      可管理的代碼執(zhí)行

           .NET框架管理執(zhí)行.NET應(yīng)用程序時(shí)對(duì)象的狀態(tài)。

           .NET框架自動(dòng)分配內(nèi)存并提供來機(jī)收集機(jī)制來重新分配內(nèi)存

      Side-by-side執(zhí)行

           .NET框架通過使用不同版本的裝配器允許同一應(yīng)用程序的不同版本運(yùn)行在同一機(jī)器上。裝配器由IL代碼和元數(shù)據(jù)組成。元數(shù)據(jù)決定應(yīng)用程序的依賴關(guān)系。通過這個(gè),.NET框架運(yùn)行時(shí)能執(zhí)行多種版本裝配器并且解決遺留的開發(fā)環(huán)境的主要問題。那就是DLL HELL


.NET裝配器


2 Side-by-side執(zhí)行

理解.NET框架CLR

    公共語言運(yùn)行時(shí):

  • 運(yùn)行時(shí)環(huán)境
    • CLR把應(yīng)用程序編譯成有運(yùn)行時(shí),把IL代碼編譯成本地代碼,執(zhí)行代碼
  • 運(yùn)行時(shí)服務(wù)
    • 內(nèi)存管理
    • 類型安全
    • 增強(qiáng)安全
    • 異常管理
    • 線程支持
    • 調(diào)試支持

理解.NET框架CLR的體系結(jié)構(gòu)

理解.NET框架CLR的體系結(jié)構(gòu)


  • 類加載器,將類加載到CLR。
  • MSIL到本地代碼的編譯,將把MSIL轉(zhuǎn)變成本地代碼。
  • 代碼管理器,它在代碼執(zhí)行期間進(jìn)行管理。
  • 內(nèi)存分配和垃圾收集,表現(xiàn)為自動(dòng)內(nèi)存管理。
  • 安全的引擎,使用微軟提供的工具和在控制面板對(duì).NET框架配置加強(qiáng)安全限制包括代碼級(jí)安全、文件及機(jī)器級(jí)安全。
  • 類型檢查器,增強(qiáng)強(qiáng)類型檢查。
  • 線程支持,提供對(duì)應(yīng)用程序的多線程支持。
  • 異常管理器,提供對(duì)運(yùn)行時(shí)異常處理的機(jī)制。
  • 調(diào)試引擎,允許開發(fā)者調(diào)試應(yīng)用程序的不同類型。
  • COM配置,允許.NET應(yīng)用程序與COM應(yīng)用程序交換數(shù)據(jù)。
  • 基類庫支持,提供應(yīng)用程序運(yùn)行時(shí)所需的類。

公共語言運(yùn)行時(shí)的特征

    CLR有以下特征:

  • 管理內(nèi)存:
    • 內(nèi)存分配
    • 內(nèi)存的重分配(垃圾收集)
  • 線程執(zhí)行支持
  • 代碼執(zhí)行
  • 代碼安全檢查
  • 編譯
    • MSIL到本地代碼
  • 基于信任的代碼安全(對(duì)執(zhí)行代碼的授權(quán)。代碼級(jí),文件級(jí),機(jī)器級(jí))這些特征對(duì)運(yùn)行在公共語言運(yùn)行時(shí)的可管理代碼來說是固有的。

理解CLR

    為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關(guān)的代碼和平臺(tái)相關(guān)的指令組成的MSIL代碼。MSIL有下列組成:

  • 能夠執(zhí)行算術(shù)和邏輯運(yùn)算的指令。
  • 直接訪問內(nèi)存。
  • 控制執(zhí)行流
  • 處理異常

    MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運(yùn)行期用到的其他類型。
    一個(gè)裝配器由精簡(jiǎn)的可執(zhí)行文件組成。當(dāng)執(zhí)行PE文件的時(shí)候類加載器價(jià)載MSIL代碼而元數(shù)據(jù)把精簡(jiǎn)的可執(zhí)行文件編成運(yùn)行時(shí)內(nèi)存。
    PE文件執(zhí)行之前它將代碼傳遞到本地代碼編譯器進(jìn)行編譯,IL到本地代碼的編譯是有JIT編譯器完成的。因?yàn)椴煌?/span>CPU架構(gòu)和編譯器 IL代碼到本地指令。

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

    為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關(guān)的代碼和平臺(tái)相關(guān)的指令組成的MSIL代碼。MSIL有下列組成:

  • 能夠執(zhí)行算術(shù)和邏輯運(yùn)算的指令。
  • 直接訪問內(nèi)存。
  • 控制執(zhí)行流
  • 處理異常

    MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運(yùn)行期用到的其他類型。
    一個(gè)裝配器由精簡(jiǎn)的可執(zhí)行文件組成。當(dāng)執(zhí)行PE文件的時(shí)候類加載器價(jià)載MSIL代碼而元數(shù)據(jù)把精簡(jiǎn)的可執(zhí)行文件編成運(yùn)行時(shí)內(nèi)存。
    PE文件執(zhí)行之前它將代碼傳遞到本地代碼編譯器進(jìn)行編譯,IL到本地代碼的編譯是有JIT編譯器完成的。因?yàn)椴煌?/span>CPU架構(gòu)和編譯器 IL代碼到本地指令。

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

    CLR有以下特征:

  • 管理內(nèi)存:
    • 內(nèi)存分配
    • 內(nèi)存的重分配(垃圾收集)
  • 線程執(zhí)行支持
  • 代碼執(zhí)行
  • 代碼安全檢查
  • 編譯
    • MSIL到本地代碼
  • 基于信任的代碼安全(對(duì)執(zhí)行代碼的授權(quán)。代碼級(jí),文件級(jí),機(jī)器級(jí))這些特征對(duì)運(yùn)行在公共語言運(yùn)行時(shí)的可管理代碼來說是固有的。

理解CLR

    為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關(guān)的代碼和平臺(tái)相關(guān)的指令組成的MSIL代碼。MSIL有下列組成:

  • 能夠執(zhí)行算術(shù)和邏輯運(yùn)算的指令。
  • 直接訪問內(nèi)存。
  • 控制執(zhí)行流
  • 處理異常

    MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運(yùn)行期用到的其他類型。
    一個(gè)裝配器由精簡(jiǎn)的可執(zhí)行文件組成。當(dāng)執(zhí)行PE文件的時(shí)候類加載器價(jià)載MSIL代碼而元數(shù)據(jù)把精簡(jiǎn)的可執(zhí)行文件編成運(yùn)行時(shí)內(nèi)存。
    PE文件執(zhí)行之前它將代碼傳遞到本地代碼編譯器進(jìn)行編譯,IL到本地代碼的編譯是有JIT編譯器完成的。因?yàn)椴煌?/span>CPU架構(gòu)和編譯器 IL代碼到本地指令。

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

    為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關(guān)的代碼和平臺(tái)相關(guān)的指令組成的MSIL代碼。MSIL有下列組成:

  • 能夠執(zhí)行算術(shù)和邏輯運(yùn)算的指令。
  • 直接訪問內(nèi)存。
  • 控制執(zhí)行流
  • 處理異常

    MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運(yùn)行期用到的其他類型。
    一個(gè)裝配器由精簡(jiǎn)的可執(zhí)行文件組成。當(dāng)執(zhí)行PE文件的時(shí)候類加載器價(jià)載MSIL代碼而元數(shù)據(jù)把精簡(jiǎn)的可執(zhí)行文件編成運(yùn)行時(shí)內(nèi)存。
    PE文件執(zhí)行之前它將代碼傳遞到本地代碼編譯器進(jìn)行編譯,IL到本地代碼的編譯是有JIT編譯器完成的。因?yàn)椴煌?/span>CPU架構(gòu)和編譯器 IL代碼到本地指令。

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



 

 

CLR的特點(diǎn)

  • 被管理的多線程支持和線程監(jiān)控。應(yīng)用程序域包括一個(gè)或多個(gè)執(zhí)行線程。
  • 管理不安全代碼的互用性,和COM配置。
  • 結(jié)構(gòu)化的異常處理機(jī)制
  • 基礎(chǔ)架構(gòu)和被管理執(zhí)行進(jìn)程,內(nèi)存管理和垃圾收集

CLR的結(jié)構(gòu)



  • 基類庫支持支持所有使用.NET語言來支持基本功能性的基類。
  • COM配置支持COM對(duì)象間數(shù)據(jù)的重組。
  • 異常管理支持使用try catch finally語句塊在運(yùn)行時(shí)處理錯(cuò)誤。
  • 安全引擎在運(yùn)行時(shí)加強(qiáng)安全規(guī)則。
  • 類型檢查器在運(yùn)行時(shí)作類型安全檢查。
  • 調(diào)試引擎支持運(yùn)行時(shí)調(diào)試。
  • 代碼管理器管理運(yùn)行時(shí)被管理代碼
  • IL到本地代碼編譯器將MSIL代碼編譯成機(jī)器相關(guān)的本地代碼
  • 垃圾收集器支持內(nèi)存管理并支持清理運(yùn)行時(shí)廢棄的內(nèi)存。
  • 類加載器在運(yùn)行時(shí)加載類。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
常用的.NET面試問題 - 1
C#技術(shù)漫談之公共語言運(yùn)行庫(CLR)
CLR 這些年有啥變化嗎?
為你解疑:CLR是什么?
CLR(公共語言運(yùn)行時(shí),Common Language Runtime)
Beginning C# 2008讀書筆記系列―― 介紹C# - 思索、堅(jiān)韌、創(chuàng)新、成長(zhǎng) ...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服