Negli anni la mia applicazione è passata da pochi MB a oltre 50 MB. Per semplificare l'implementazione, mi sono sempre limitato ad avere un singolo file EXE invece di avere un EXE più piccolo e un sacco di DLL (vedi anche la mia domanda su StackOverflow: https://stackoverflow.com/questions/2881296/one-big-executable-or-many-small-dlls ).
Tuttavia, ora ho alcuni clienti che si lamentano che ogni nuova versione ha requisiti di memoria più elevati. Passare alle DLL potrebbe risolvere alcuni di questi problemi, perché penso che Windows carichi solo le DLL una volta in memoria (quindi se si hanno 50 processi tutti usando la stessa DLL, la DLL occupa spazio solo una volta nella memoria fisica).
D'altra parte, se ho 50 processi tutti usando lo stesso file EXE, mi aspetto che Windows condivida anche questo file EXE per più processi. Ma ho l'impressione che Windows non lo faccia (e lo fa solo per i file DLL). Questa osservazione è vera?
Windows carica veramente una DLL una volta in memoria se utilizzata da più processi?
Windows carica anche un file EXE una volta in memoria se utilizzato da più processi? O no?