Lavoro su un programma con circa 50 DLL caricate da un eseguibile, è un vecchio programma di coltivazione organica in cui l'unica motivazione per la creazione di una nuova DLL è quella in cui non esisteva in precedenza per soddisfare una determinata esigenza. (e gli spazi dei nomi non esistevano in Delphi quindi non ci è mai venuto in mente di fare dll1.main.pas, dll2.main.pas o qualcosa di ancora più unico)
Quello che vogliamo fare è consolidare tutte queste DLL in un unico eseguibile, dal momento che nessuno di questi viene utilizzato fuori dal programma, non ci dovrebbe essere molto di un problema. La preoccupazione che ha il mio capo è che se lo facessimo, il sovraccarico della memoria per i client del terminal server sarebbe passato attraverso il tetto.
Quindi, ho passato abbastanza codice di inizializzazione per sapere che molte cose vengono fatte ogni volta che una DLL viene caricata in memoria, ma diciamo che ho un progetto con circa 4000 file e 50 dll, 10 di che sono probabilmente utilizzati da qualsiasi utente in una qualsiasi sessione del programma. Le 50 DLL sono file di circa 2/3, se non di più, ma oltre a questo non vengono caricate molte altre risorse (solo alcune immagini, icone, cursori, ecc.). Se ho caricato tutti questi file in memoria, quanta memoria viene utilizzata per unità? quanto viene utilizzato per classe? Come posso mantenere il sovraccarico? e qual è il più grande progetto che ci si può ragionevolmente aspettare di costruire con Delphi?
Questo bocconcino non aiuta a rispondere, ma penso che potrebbe chiarire che cosa il mio capo è preoccupato, attualmente iniziamo il nostro programma a circa 18 meg, le normali condizioni di lavoro sono solitamente meno di 40 mega, pensa che potrebbe salire più in alto come 120 mega.