Domanda

Sfondo:Nella mia azienda stiamo sviluppando un mucchio di applicazioni utilizzando la stessa base di dll.Tali dll in uso Spring.net's IoC-contenitore per legare le cose (auto-cablaggio).Tutte le applicazioni che utilizzano la stessa primavera del file di configurazione e file di configurazione dei punti a molte classi in diversi dll.Ma non tutte le applicazioni esigenze di funzionalità da ogni dll.Ma a causa del modo IoC-contenitori di opere, tutte le dll viene caricata per Spring.net esaminare i tipi e di controllo che le interfacce di attuare e così via.

Domande fondamentali:Ho capito che è meglio caricare la dll che si usano davvero.Ma è davvero un male per l'utilizzo di memoria solo per caricare una dll gestita?O è primo, quindi si utilizza classi nella dll e sono sempre JIT sotto che più memoria?

È stato utile?

Soluzione

Se nessuno di codice assembly è mai usato, quindi alla fine le pagine che il montaggio sarà spostato dalla memoria il file di paging a favore di utilizzato attivamente pagine.In questo caso, il complessivo effetto a lungo termine è probabile che sia minore.Anche se, ci sarà un effetto negativo sul tempo di avvio.

Altri suggerimenti

Io non credo che sia così male.Unico problema è che a causa della grande metadati e la quantità di memoria la tua applicazione si è più possibile che alcune parti del programma che sono in uso saranno ubicati in diverse pagine di memoria che puo 'causare alcune perdite di prestazioni, ma è molto bassa segmento di applicazione in cui questo tipo di cose sono fondamentali.

Veramente brutto, è un termine difficile da quantificare, credo che dipende dalla scala di cose, in generale direi che se si può evitare di caricare roba non c'è bisogno, allora si dovrebbe.Ma, naturalmente, se si sta utilizzando la reflection per determinare se si può utilizzarlo, è necessario prima di caricarlo...la gallina e l'uovo problema.

Qualcosa di essere a conoscenza di se, una volta che si carica un'assemblea in un Dominio di Applicazione, non è possibile poi scaricare da quel dominio dell'Applicazione, è comunque possibile creare dinamicamente domini applicazione del carico assemblee e scaricare l'intero dominio dell'applicazione quando si è fatto.

naturalmente il caricamento della dll w/o il loro utilizzo provoca un rallentamento del tempo di avvio a causa di lettura all'assemblea dal disco e prove/controlli di sicurezza.Ma se la memoria è la tua preoccupazione, si può almeno essere sicuro di non perdere più memoria rispetto alle dimensioni delle vostre assemblee, se davvero non utilizzare qualsiasi tipo all'interno.Naturalmente se questi tipi sono specificati nella primavera di configurazione, almeno per coloro i tipi vengono caricati in memoria e la loro inizializzatore statico (se presente) sarà eseguita.In rari casi, questo potrebbe essere un problema.JITing è fatto dal CLR su una base di metodo, in modo metodi non utilizzare non sprecare cpu+memoria.

In ogni caso si può dividere i file di configurazione delle partizioni ad es.mettendo tutte le definizioni degli oggetti di modulo in Un file moduleA.config, tutte le definizioni di cui al modulo B in file moduleB.config e specificare solo i moduli per la vostra applicazione particolare che sono veramente necessari.

hth, Erich

P. S.:Vorrei anche suggerire post di Primavera per .NET le questioni rilevanti per il nostro forum della community - è più probabile che per ottenere risposte alle tue domande lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top