За эти годы мое приложение выросло с нескольких МБ до более чем 50 МБ. Чтобы упростить развертывание, я всегда придерживался одного файла EXE вместо меньшего EXE и большого количества DLL (см. Также мой вопрос по StackOverflow: https://stackoverflow.com/questions/2881296/one-big-executable-or- много-мало-dll).
Тем не менее, теперь у меня есть клиенты, которые жалуются, что у каждой новой версии повышенные требования к памяти. Переход к DLL может решить некоторые из этих проблем, потому что я думаю, что Windows загружает DLL только один раз в память (поэтому, если у вас есть 50 процессов, использующих одну и ту же DLL, DLL занимает место в физической памяти только один раз).
С другой стороны, если у меня 50 процессов, использующих один и тот же EXE-файл, я ожидаю, что Windows также совместно использует этот EXE-файл для нескольких процессов. Но у меня сложилось впечатление, что Windows не делает этого (а делает это только для DLL-файлов). Это наблюдение верно?
Действительно ли Windows загружает DLL один раз в память, если она используется несколькими процессами?
Windows также загружает файл EXE один раз в память, если используется несколькими процессами? Или нет?