Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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:
В качестве совета, в сложившейся ситуации, можно порекомендовать изменение имени библиотеки с последующей перекомпиляцией как самой библиотеки так и файла-проекта.



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
1-8911
Марина
2002-01-17 13:48
2002.02.04
Цветшрифта в ячейке StringGrid


3-8782
Pete
2002-01-03 09:57
2002.02.04
InterBase


1-8806
f0rm
2002-01-15 12:32
2002.02.04
Перевод юниксовского времени в нормальное виндовое


3-8775
Georg
2002-01-07 15:16
2002.02.04
Заковырочка-запупырочка...


1-8823
dzk
2002-01-20 00:54
2002.02.04
Загрузка из ресурса текста в кавычках





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский