Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Вниз

Как убить DLL-ку, находящуюся в памяти? 


Chak   (2002-01-19 15:48) [0]

Во время разработки DLL-ки, после кимпиляции приложения в результате(какой либо, неважно какой) ошибки приходятся подправлять код и соответственно повторно компилировать его, часто бывает так что загруженная в память DLL-ка там и остается после вихода из приложения, а при повторной компиляции грузится не та, код которой подправлен, а та что висит в памяти.
Вопрос: как избавится от той что висит в памяти, ато перезагрузка самой Delphi уже порядком надоела, да и времени уходит много!?



paul_shmakov   (2002-01-20 02:17) [1]

??? как Вам это удается?
1. когда выгружается приложение также выгружаются и все загруженные им dll.
2. если Вам все таки удалось свою dll оставить где-то в памяти, то у Вас не должна пройти компиляция проекта этой dll, т.к. ее файл недоступен для записи



Chak   (2002-01-20 11:09) [2]

Незнаю даже, но факт всетаки остается фактом, она висит в памяти!
Иногда даже рестарт Delphi не помагает, приходится переружать комп! Как же быть в таком случае, что я не так делаю?



StelZ   (2002-01-20 19:28) [3]

Если не шибаюсь, то все в порядке. Дело в том, что DLL-ки даже после завершения приложения остаются в памяти. Сделано это для удобства использования приложений. Например, запусти Word. Он будет довольно длительное время грузиться. Закрой его. Открой заново. Он запустится за считанные секунды. Это из-за того, что большенство его функций записаны в DLL-ках, которые остаются в памяти.
Возможно, та же ситуация и у тебя. Винда думает, что ты вызываешь ту же самую DDL-ю и вызывает не заново скомпилированную, а ту, которая было в памяти.

имхо...



Chak   (2002-01-20 23:06) [4]

Как же заставить грузиться ту что нужно мне?



Aleksey Pavlov   (2002-01-21 14:23) [5]

При работе с dll надо учитывать тот факт, что, когда вы используете ф-ию FreeLibrary вы не выгружаете, а освобождаете dll !
Ваша библиотека может оставаться в памяти даже после того, как все приложения перестанут её использовать.
Это сделано для оптимизации работы с dll. Система специально не освобождает память из под dll (не всегда !) на случай, если данная библиотека понадобится какому-то процессу.
Никаких документированных способов насильно выгрузить DLL из памяти нет.
А те, что использует сама система, работают с ядром на низком уровне.

>> Chak:
В качестве совета, в сложившейся ситуации, можно порекомендовать изменение имени библиотеки с последующей перекомпиляцией как самой библиотеки так и файла-проекта.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.048 c
6-8964            Lamok                 2001-11-10 15:48  2002.02.04  
Почтовый Сервер


3-8764            KonuhovSegey          2002-01-02 09:28  2002.02.04  
Убрать ограничения на количество изменений в одной транзакции


7-9009            Predator              2001-10-28 00:16  2002.02.04  
ОС


6-8967            Burmistroff           2001-11-10 20:28  2002.02.04  
Как узнать, прослушивается ли уже данный порт?


3-8749            $hade                 2002-01-03 08:08  2002.02.04  
Interbase +Transaction....