Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Можно ли выгрузить из памяти dll и как?   Найти похожие ветки 

 
Alexander ©   (2002-11-10 11:13) [0]

Загружаю её в память не я и мне достоверно известно, что она уже не используется. Она, конечно и сама через некоторое время выгрузиться, но мне нужно ускорить этот процесс (uninstall программы)


 
Наезжалкин   (2002-11-10 11:54) [1]

Попробуйте FreeLibrary(). Сильная вещь!


 
Reindeer Moss Eater   (2002-11-10 12:23) [2]

Не поможет, хоть и сильная вешь.


 
Relict   (2002-11-10 13:57) [3]

а зачем её выгружать если она(dll) уже не используется
зразу смело удаляй
операционнка сама ее выгрузит как поступит команда на удаление
в чем проблемма то?


 
Song ©   (2002-11-10 14:16) [4]

GetModuleHandle()+FreeLibrary()
Стыдно должно быть, товарищ, такие вопросы задавать! ;-)


 
Aleksey Pavlov ©   (2002-11-10 14:39) [5]

Забавно, господа, получается у вас.
Постановка задачи:
"Загружаю её в память не я и мне достоверно известно, что она уже не используется."
Можно сделать вывод, что счётчик ссылок обнулён и DLL находится в памяти только из-за "привычки" Windows ненадолго сохранять в памяти последнии загруженные физические образы DLL уже после обнуления ссылок на них.
Таким образом, попытка GetModuleHandle()+FreeLibrary() будет неудачной.
Насколько мне известно, документированных способов очистки физ. памяти из-под "обнулённой" DLL "вручную" не существует.
Система сама освободит память, когда потребуется.


 
Song ©   (2002-11-10 15:07) [6]

2Aleksey Pavlov © (10.11.02 14:39)
Можно сделать цикл постоянного исполнения FreeLibrary пока dll не будет вытащена.


 
Reindeer Moss Eater   (2002-11-10 15:24) [7]

Это лишь отменит отображение DLL в адресное пространство процесса, занятого циклическим выполнением FreeLibrary.

Если библиотека была загружена еще кем-то, то ничего реально не выгрузится.


 
kig ©   (2002-11-10 19:31) [8]

Если используется XP, то можно попробывать

CoFreeUnusedLibrariesEx
Unloads any DLLs that are no longer in use and whose unload delay has expired.

void CoFreeUnusedLibrariesEx(

DWORD dwUnloadDelay, //The unload delay for DLLs no longer in use

DWORD dwReserved //Reserved for future use

);

Parameters
dwUnloadDelay
[in] The delay in milliseconds between the time that the DLL has stated it can be unloaded until it becomes a candidate to unload. Setting dwUnloadDelay=INFINITE uses the system default delay (10 minutes). Setting dwUnloadDelay=0 forces the unloading of any DLLs without any delay.

dwReserved

[in] Reserved for future use; must be zero.


 
Alex44   (2002-11-10 19:33) [9]

Windows cachiruet dll"s, i, v obshem, pravil"no delaet. IMHO, esli DLL ne zanyata ni kem drugim, to ona vygruzitsya, esli potrebovat" mnogo pamyati.



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-74826
harismatik
2002-12-11 20:46
2002.12.23
Ввод фрагмента HTML кода


14-74897
Beginner
2002-12-03 23:35
2002.12.23
Посветка синтаксиса


1-74790
dakus
2002-12-10 11:33
2002.12.23
Классы


3-74565
Shaman
2002-12-03 17:21
2002.12.23
Значение поля кот. было до обновления в триггере FOR UPDATE


1-74783
VladTen
2002-12-11 09:31
2002.12.23
Как опреледить имя компьютера