2010-07-14 13 views
6

Il CLR viene caricato e inizializzato ogni volta, quando viene caricata una nuova applicazione gestita e se è già presente un'applicazione gestita?Il CLR viene caricato e inizializzato ogni volta, quando viene caricata una nuova applicazione gestita?

ad es. Se sulla mia macchina, l'applicazione "TestApp" è in esecuzione e dopo di che avvio un'altra applicazione "DemoApp". In questo caso, verrà caricato nuovamente CLR per DemoApp? O utilizzerà lo stesso che viene caricato da TestApp?

risposta

8

Sì, e gli assembly sono compilati JIT, gli heap sono allocati e così via. Il caricatore di immagini di Windows aiuterà un po 'ma in generale l'overhead CLR è per processo.

+0

Thanks.I vogliono sapere di più su this.Can suggerite alcune risorse? – TAdhav

+0

Per i libri, consultare http://stackoverflow.com/questions/477748/what-are-the-best-c-net-books/477751#477751 - Il libro di Richter contiene molti dettagli di basso livello sul CLR. Per informazioni sul caricatore di immagini di Windows, controllare http://technet.microsoft.com/en-us/sysinternals/bb963901.aspx –

+0

@BrianRasmussen il collegamento SO è interrotto – deostroll

4

CLR non è caricato completamente ogni volta. L'articolo collegato sotto menziona uno scenario di "avvio a caldo", quando il CLR è pronto. Potresti averlo notato da te quando avvii un'applicazione .NET per la prima volta dopo l'avvio del sistema.

Nello scenario di avvio a caldo (ad esempio, è già stata eseguita un'applicazione gestita una sola volta), è probabile che la maggior parte delle pagine per i componenti Common Language Runtime (CLR) principali siano già caricate in memoria da dove il sistema operativo può riutilizzarli, risparmiando costosi tempi di accesso al disco. Ecco perché un'applicazione gestita è molto più veloce per avviarsi la seconda volta che la esegui. Queste debolezze dominano la calda partenza.

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

+0

Il link è morto. – BartoszKP

Problemi correlati