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要求的語言特性。