国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

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

開通VIP
CLR(公共語言運(yùn)行時(shí),Common Language Runtime)
CLR(公共語言運(yùn)行時(shí),Common Language Runtime)和Java虛擬機(jī)一樣也是一個(gè)運(yùn)行時(shí)環(huán)境,它負(fù)責(zé)資源管理(內(nèi)存分配和垃圾收集),并保證應(yīng)用和底層操作系統(tǒng)之間必要的分離。
  為了提高平臺的可靠性,以及為了達(dá)到面向事務(wù)的電子商務(wù)應(yīng)用所要求的穩(wěn)定性級別,CLR還要負(fù)責(zé)其他一些任務(wù),比如監(jiān)視程序的運(yùn)行。按照.NET的說法,在CLR監(jiān)視之下運(yùn)行的程序?qū)儆凇笆芄芾淼摹保╩anaged)代碼,而不在CLR之下、直接在裸機(jī)上運(yùn)行的應(yīng)用或者組件屬于“非受管理的”(unmanaged)的代碼。
  CLR將監(jiān)視形形色色的常見編程錯(cuò)誤,許多年來這些錯(cuò)誤一直是軟件故障的主要根源,其中包括:訪問數(shù)組元素越界,訪問未分配的內(nèi)存空間,由于數(shù)據(jù)體積過大而導(dǎo)致的內(nèi)存溢出,等等。
  然而,這種對受管理代碼的運(yùn)行監(jiān)視是有代價(jià)的。雖然當(dāng)前還不可能精確地得到監(jiān)視程序運(yùn)行所需要的開銷,但從當(dāng)前Beta測試版的性能表現(xiàn)來看,正如Microsoft所承認(rèn)的那樣,我們可以預(yù)料由它導(dǎo)致的性能降低程度至少達(dá)到10%。當(dāng)然,如果監(jiān)視程序運(yùn)行能夠?qū)⒎€(wěn)定性和可用性提高到一個(gè)新的檔次,我們可以懷疑10%的性能降低是否還可以稱為一件壞事……
  在處理器性能改善方面,摩爾定律已經(jīng)一再被證明是正確的。既然如此,我們要得到一臺性能增加了10%的服務(wù)器要等待多長時(shí)間呢。

另有:CLR 公用語言運(yùn)行時(shí)

  Common Language Runtime
  .NET提供了一個(gè)運(yùn)行時(shí)環(huán)境,叫做公用語言運(yùn)行時(shí)(Common Language Runtime),是一種多語言執(zhí)行環(huán)境,支持眾多的數(shù)據(jù)類型和語言特性。他管理著代碼的執(zhí)行,并使開發(fā)過程變得更加簡單。這是一種可操控的執(zhí)行環(huán)境,其功能通過編譯器與其他工具共同展現(xiàn)。
  依靠一種以運(yùn)行時(shí)為目標(biāo)的編譯器開發(fā)的代碼叫做可操控代碼。
  元數(shù)據(jù):為了使運(yùn)行時(shí)環(huán)境可以向可操控代碼提供服務(wù),語言編譯器需要產(chǎn)生一種元數(shù)據(jù),它將提供在使用語言中的類型、成員、引用的信息。運(yùn)行時(shí)環(huán)境使用元數(shù)據(jù)定位并載入類,在內(nèi)存中展開對象實(shí)例,解決方法調(diào)用,產(chǎn)生本地代碼,強(qiáng)制執(zhí)行安全性,并建立運(yùn)行時(shí)環(huán)境的邊界。
  可操控執(zhí)行的含義:對象在執(zhí)行的過程中完全被運(yùn)行時(shí)環(huán)境所控制。運(yùn)行時(shí)環(huán)境提供以下服務(wù):自動內(nèi)存管理、調(diào)試支持、增強(qiáng)的安全性及與非可操控性代碼的互操作性。條件:1、選擇以運(yùn)行時(shí)為目標(biāo)的語言編譯器,如VB、C#;2、在組件的輸出類型中使用CLR要求的語言特性。

編輯本段跨語言集成的能力

  CLR包含了一個(gè)豐富的語言特性集,保證了它與各種程序設(shè)計(jì)語言的兼容性。這一特性集即公用語言規(guī)范,稍后將對其進(jìn)行詳細(xì)說明。

編輯本段內(nèi)存管理自動化

  在執(zhí)行過程中管理應(yīng)用程序的資源是一項(xiàng)單調(diào)而困難的工作。它會將你的注意力從你本應(yīng)解決的問題中引開。而垃圾收集機(jī)制完全解決了程序員在編程過程中頭痛的問題,跟蹤內(nèi)存的使用,并知道何時(shí)將它們釋放。
  在面向?qū)ο?/a>的環(huán)境中,每種類型都標(biāo)識了對你的應(yīng)用程序有用的某種資源。為了使用這些資源,你需要為類型分配內(nèi)存。在應(yīng)用中,訪問一種資源要通過以下步驟:
 ?。?)為類型分配內(nèi)存。
 ?。?)初始化內(nèi)存,設(shè)置資源的初始狀態(tài)并使其可用。
 ?。?)通過訪問該類型的實(shí)例成員來訪問資源。
 ?。?)卸下將被清除的資源狀態(tài)。
  (5)釋放內(nèi)存。
  這一看似簡單的過程在實(shí)際的編程中是產(chǎn)生錯(cuò)誤的主要來源之一。更可怕的是:內(nèi)存中的錯(cuò)誤往往導(dǎo)致不可預(yù)見的結(jié)果。如果你有過編程的經(jīng)驗(yàn),想想看,有多少次你的程序因?yàn)閮?nèi)存訪問錯(cuò)誤而崩潰?
  CLR要求所有的資源從可操控的堆(注:在此指一種內(nèi)存結(jié)構(gòu))中分配。當(dāng)一個(gè)進(jìn)程被初始化后,CLR保留了一個(gè)未被分配的地址空間。這一區(qū)域叫做可操控堆。在堆中保持了指向下一個(gè)將被分配給對象的堆地址的指針(NEXT)。
  初始狀態(tài)下,該指針是保留地址空間的基地址。一個(gè)應(yīng)用使用新的操作產(chǎn)生對象。此操作首先檢查新對象需要字節(jié)的大小是否會超出保留空間。如果對象大小合適,指向下一個(gè)地址的指針將指向堆中的這個(gè)對象,該對象的
構(gòu)造器被調(diào)用,新的操作返回對象的地址。
  當(dāng)一個(gè)應(yīng)用請求建立一個(gè)對象時(shí),地址空間可能不夠大。堆將發(fā)現(xiàn)這一點(diǎn)(通過將新對象的大小與NEXT指針相加,并與堆的大小進(jìn)行比較),這時(shí)垃圾收集器就將被調(diào)用。在這里,CLR引入了“代”的概念。代,指堆中對象產(chǎn)生的先后。這樣,垃圾收集器在將發(fā)生溢出時(shí)回收屬于特定的“代”的對象,而不是回收堆中的所有對象。
 ?。?)即時(shí)編譯
  在各種語言的編譯器對源代碼進(jìn)行編譯之后,在CLR環(huán)境中產(chǎn)生的是中間代碼(出于兼容性與跨語言集成的考慮),其內(nèi)容雖然有效,但在轉(zhuǎn)化為本地代碼之前它本身是不可執(zhí)行的。這就是JIT編譯器需要完成的工作。
  這里需要說明一個(gè)問題:為什么要即時(shí)編譯,而不是一次性的將中間代碼文件進(jìn)行編譯?答案很簡單:原因在于效率。在大型的應(yīng)用中,你很少會用到程序的全部功能,這種邊執(zhí)行邊編譯的措施比一次性的完全編譯效率更高。

編輯本段CLR帶有三個(gè)不同的JIT編譯器

  在Windows平臺中,CLR帶有三個(gè)不同的JIT編譯器:
 ?。?)缺省的編譯器---主編譯器,由它進(jìn)行數(shù)據(jù)流分析并輸出經(jīng)過優(yōu)化的本地代碼,所有的中間代碼指令均可被它處理。
 ?。?)PREJIT,它建立在主JIT編譯器之上。其運(yùn)行方式更象一個(gè)傳統(tǒng)的編譯器:每當(dāng)一個(gè).NET組件被安裝時(shí)它就運(yùn)行。
  (9)ECONOJIT,在并不充分優(yōu)化的前提下,它能夠快速完成IL代碼到本地碼的轉(zhuǎn)換,編譯速度與運(yùn)行速度都非常快。
  為了配合編譯器的工作,在.NET SDK的安裝路徑下的/bin目錄中有一個(gè)負(fù)責(zé)管理JIT的應(yīng)用程序:jitman.exe。具體的使用參見聯(lián)機(jī)幫助。

編輯本段解決版本與發(fā)布問題。

  在當(dāng)前以組件為基礎(chǔ)的系統(tǒng)中,開發(fā)人員和用戶對于軟件版本和發(fā)布中存在的問題已經(jīng)十分熟悉了。當(dāng)我們安裝一個(gè)新的應(yīng)用之后,我們很可能發(fā)現(xiàn)原本正常的某個(gè)應(yīng)用程序奇怪的停止了工作。絕大多數(shù)開發(fā)人員將時(shí)間花在了確保所有注冊表入口的一致性,以便激活COM類上。這就是所謂的“DLL地獄”。
  .NET平臺通過使用集合來解決這一問題。在這里,“集合”是一個(gè)專有名詞,指類型與資源的發(fā)布單元,在很大程度上它等同于今天的DLL。正象.NET用元數(shù)據(jù)描述類型一樣,它也用元數(shù)據(jù)描述包含類型的集合。
  通常說來,集合由四個(gè)部分組成:集合的元數(shù)據(jù)(集合的內(nèi)部清單)、元數(shù)據(jù)描述的類型、實(shí)現(xiàn)類型的中間語言代碼和一組資源。在一個(gè)集合中,以上四個(gè)部分并不是都必須存在,但是,集合中必須包含類型或資源,這樣集合才有意義。
  在.NET中一個(gè)基本的設(shè)計(jì)方針是使用孤立的組件。一個(gè)孤立的集合的含義是指一個(gè)集合只能被一個(gè)應(yīng)用所訪問。在一臺機(jī)器上,它不被多個(gè)應(yīng)用共享,也不會受其它應(yīng)用程序?qū)ο到y(tǒng)的更改的影響?!肮铝ⅰ辟x予了開發(fā)人員在自己的程序中對代碼的完全控制權(quán)。
  任何共享代碼都需要被明確地標(biāo)識。同時(shí),.NET框架也支持共享集合的概念。一個(gè)共享集合指在一臺機(jī)器上被多個(gè)應(yīng)用共享的集合。共享集合需要嚴(yán)格地命名規(guī)定。
  有了.NET,應(yīng)用程序間的共享代碼是明確定義的。共享集合需要一些額外的規(guī)則來避免我們今天遇到的共享沖突問題。共享代碼必須有一個(gè)全局唯一的名稱,系統(tǒng)必須提供名稱保護(hù),并在每當(dāng)引用共享集合時(shí),CLR將對版本信息進(jìn)行檢查。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
快速理解.NET Framework (2)
為你解疑:CLR是什么?
常用的.NET面試問題 - 1
C#學(xué)習(xí)第二天
.Net編譯原理簡單介紹
為什么Python這么慢?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服