Windows гарантирует, что память будет содержать только одну копию той же самой DLL, что и в Linux? - PullRequest
2 голосов
/ 11 июня 2011

Я всегда думал, что .dll работает так же, как .so в Linux,

, но некоторые статьи говорят, что нет.

Windows гарантирует, что память будет содержать только одну копию той же DLLкак в Linux?

У меня нет подсказки, чтобы проверить это самостоятельно в Windows, поэтому я могу только спросить здесь.

ОБНОВЛЕНИЕ

Кто-нибудь знает, как проверить это вручную?

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

Если DLL может быть загружена по одному и тому же базовому виртуальному адресу в двух процессах, то в физической памяти будет только одна копия DLL.

Поскольку Windows не использует независимый от позиции код, если библиотека DLL не может загрузить по своему предпочтительному базовому адресу, она будет перебазирована и, следовательно, не сможет использовать физическую память для других экземпляров.

0 голосов
/ 11 июня 2011

Вот краткое описание: DLL Hell , в основном в современных Windows используется метод, называемый Memory Mapping, при котором DLL загружается один раз, , если оба процесса пытаются загрузить DLL из тот же каталог. Итак, чтобы ответить на ваш вопрос, он работает так же, как в Linux.

...