Освобождает ли ОЗУ удаление файлов .dll из каталога system32?


-1

Удаление DLL не является хорошей идеей, но я показываю некоторые DLL-файлы в каталоге System32 с префиксом «QT». Я удалил QT Creator три месяца назад, так что я думаю, что они здесь бесполезны (хотя я перенес все эти dll на другой диск в случае, если некоторые другие приложения, созданные с использованием qt, потребуют их в будущем). Теперь я хочу знать, получаю ли я какую-то выгоду от памяти, делая это. Это освобождает оперативную память?


1
В любом случае приложение никогда не должно размещать DLL по этому пути. Если хотите, вы можете сообщить об ошибке в Qt.
Даниэль Б

Ответы:


5

у меня есть какое-то преимущество памяти, делая это. Это освобождает оперативную память?

Нет. Неиспользуемые файлы на диске не используют оперативную память.

Это предполагает, что они не используются. Вполне возможно, что ваша ОС (неуказанная версия Windows) также имеет файлы, которые начинаются с QT, и удаление их может что-то сломать при настройке.

Я удалил создатель QT

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


1

Ответ - нет. Библиотеки DLL вызываются только при необходимости и не используются в противном случае. Причина, по которой они находятся в папке SYSTEM32, заключается в том, что эта папка была выделена как общая папка dll. По сути, поскольку многие программы могут использовать одни и те же библиотеки, потребуется много места, если эти программы устанавливают одну и ту же библиотеку снова и снова. Чтобы бороться с этим, Microsoft выделила место, где хранятся библиотеки, чтобы ими можно было делиться.

Обычно деинсталлятор знает, используется ли библиотека другим программным обеспечением после деинсталляции, и если это так, деинсталлятор оставляет библиотеку позади. К сожалению, это не всегда так, поскольку разработчик должен правильно кодировать программу удаления, и существует множество мастеров удаления, некоторые на самом деле не делают этого должным образом.

Это объясняет, что все это занимает дисковое пространство и только в памяти, когда они фактически загружаются программным обеспечением в первую очередь.


И даже при «загрузке» в оперативную память будет введен только фактически используемый код. Несмотря на название API «LoadLibrary», библиотеки DLL не загружаются. Они сопоставлены. Сопоставление создает связь между страницами виртуального адресного пространства и содержимым библиотеки DLL, но не считывает библиотеку DLL в оперативную память. Это происходит только тогда, когда вы запускаете подпрограммы из DLL, и только те страницы, которые содержат подпрограммы, которые вы на самом деле выполняете, должны быть прочитаны («сбой», в просторечии).
Джейми Ханрахан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.