2010-07-14 26 views
6

每次加載新的託管應用程序並且存在託管應用程序時,CLR是否會加載並初始化?每次加載新的託管應用程序時是否都加載並初始化CLR?

例如如果在我的機器上,應用程序「TestApp」正在運行,然後啓動另一個應用程序「DemoApp」。在這種情況下,將爲DemoApp再次加載wiill CLR?或者它將使用TestApp加載的同一個?

回答

8

是的,程序集是JIT編譯,堆分配等等。 Windows圖像加載器會有所幫助,但通常CLR開銷是每個進程。

+0

Thanks.I想知道更多關於你this.Can建議一些資源? – TAdhav 2010-07-14 12:04:42

+0

對於書籍請參閱http://stackoverflow.com/questions/477748/what-are-the-best-c-net-books/477751#477751 - 裏希特的書有很多關於CLR的低級細節。有關Windows圖像加載程序檢查的信息http://technet.microsoft.com/en-us/sysinternals/bb963901.aspx – 2010-07-14 13:33:40

+0

@BrianRasmussen SO鏈接已損壞 – deostroll 2016-02-09 14:36:44

4

CLR每次都未完全加載。當CLR準備就緒時,下面鏈接的文章提到了「熱啓動」場景。系統啓動後第一次啓動.NET應用程序時,您可能已經注意到了這一點。

在暖啓動場景中(例如,您已經運行了託管應用程序一次),主公共語言運行時(CLR)組件的大多數頁面可能已經從內存中加載操作系統可以重用它們,節省昂貴的磁盤訪問時間。這就是爲什麼託管應用程序在第二次啓動時要快得多。這些軟故障主導了熱啓動。

http://msdn.microsoft.com/en-us/magazine/cc163655.aspx

+0

鏈接已死亡。 – BartoszKP 2016-10-27 15:31:55

相關問題