CLR(公共語(yǔ)言運行時(shí),Common Language Runtime)和Java虛擬機一樣也是一個(gè)運行時(shí)環(huán)境,它負責資源管理(內存分配和垃圾收集),并保證應用和底層操作系統之間必要的分離。 為了提高平臺的可靠性,以及為了達到面向事務(wù)的電子商務(wù)應用所要求的穩定性級別,CLR還要負責其他一些任務(wù),比如監視程序的運行。按照.NET的說(shuō)法,在CLR監視之下運行的程序屬于“受管理的”(managed)代碼,而不在CLR之下、直接在裸機上運行的應用或者組件屬于“非受管理的”(unmanaged)的代碼。 CLR將監視形形色色的常見(jiàn)編程錯誤,許多年來(lái)這些錯誤一直是軟件故障的主要根源,其中包括:訪(fǎng)問(wèn)數組元素越界,訪(fǎng)問(wèn)未分配的內存空間,由于數據體積過(guò)大而導致的內存溢出,等等。 然而,這種對受管理代碼的運行監視是有代價(jià)的。雖然當前還不可能精確地得到監視程序運行所需要的開(kāi)銷(xiāo),但從當前Beta測試版的性能表現來(lái)看,正如Microsoft所承認的那樣,我們可以預料由它導致的性能降低程度至少達到10%。當然,如果監視程序運行能夠將穩定性和可用性提高到一個(gè)新的檔次,我們可以懷疑10%的性能降低是否還可以稱(chēng)為一件壞事…… 在處理器性能改善方面,摩爾定律已經(jīng)一再被證明是正確的。既然如此,我們要得到一臺性能增加了10%的服務(wù)器要等待多長(cháng)時(shí)間呢。
另有:CLR 公用語(yǔ)言運行時(shí)
Common Language Runtime .NET提供了一個(gè)運行時(shí)環(huán)境,叫做公用語(yǔ)言運行時(shí)(Common Language Runtime),是一種多語(yǔ)言執行環(huán)境,支持眾多的數據類(lèi)型和語(yǔ)言特性。他管理著(zhù)代碼的執行,并使開(kāi)發(fā)過(guò)程變得更加簡(jiǎn)單。這是一種可操控的執行環(huán)境,其功能通過(guò)編譯器與其他工具共同展現。 依靠一種以運行時(shí)為目標的編譯器開(kāi)發(fā)的代碼叫做可操控代碼。 元數據:為了使運行時(shí)環(huán)境可以向可操控代碼提供服務(wù),語(yǔ)言編譯器需要產(chǎn)生一種元數據,它將提供在使用語(yǔ)言中的類(lèi)型、成員、引用的信息。運行時(shí)環(huán)境使用元數據定位并載入類(lèi),在內存中展開(kāi)對象實(shí)例,解決方法調用,產(chǎn)生本地代碼,強制執行安全性,并建立運行時(shí)環(huán)境的邊界。 可操控執行的含義:對象在執行的過(guò)程中完全被運行時(shí)環(huán)境所控制。運行時(shí)環(huán)境提供以下服務(wù):自動(dòng)內存管理、調試支持、增強的安全性及與非可操控性代碼的互操作性。條件:1、選擇以運行時(shí)為目標的語(yǔ)言編譯器,如VB、C#;2、在組件的輸出類(lèi)型中使用CLR要求的語(yǔ)言特性。