Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Вниз

Динамическое подключение dll   Найти похожие ветки 

 
EgorovAlex   (2007-12-05 21:34) [0]

Исследую вопрос использования dll, в которой не очень уверен (есть там утечка памяти/ресурсов или нет).

По памяти вроде прояснилось - даже если в длл есть утечка памяти, после выгрузки длл память освобождается, а вот с хендлами не так всё просто оказалось - они не освобождаются после выгрузки библиотеки. Есть какая нибудь возможнось их освободить после выгрузки библиотеки? Я понимаю, что нужно писать код без багов, но это не моя библиотека и я хочу обезопаситься.


 
DVM ©   (2007-12-05 21:47) [1]


> Есть какая нибудь возможнось их освободить после выгрузки
> библиотеки?

Если они (хэндлы) тебе известны, то закрывай их. Если неизвестны - то что ты будешь освобождать непонятно.

Вообще выкинуть надо эту библиотеку. Кстати, эта библиотека известная?


 
EgorovAlex   (2007-12-05 21:53) [2]

Нет, библиотека не известная. Меня интересует возможность этого. Есть возможность узнать открытые хендлы для процессы. Я знаю, что можно узнать для файла, кто его "держит", а тут практически обратная задача, хотя и гораздо шире - узнать список открытых хендлов у своего процесса


 
DVM ©   (2007-12-05 21:57) [3]


> узнать список открытых хендлов у своего процесса

о хэндлах чего вообще речь?


 
EgorovAlex   (2007-12-05 22:03) [4]

Тут вопрос перекликается с обломом терминального входа - мне тут сказали знакомые, что это возможно, что остаётся много открытых хендлов, поэтому и не пускает, а диспетчер задач показывает, что хендлы не растут (какие угодно хендлы)


 
DVM ©   (2007-12-05 22:07) [5]


> EgorovAlex   (05.12.07 22:03) [4]
> Тут вопрос перекликается с обломом терминального входа

Вообще 2000 хэндлов это немало. Они может и не растут, что их больше нет.


 
EgorovAlex   (2007-12-05 22:21) [6]

Хорошо, зайдём с другой стороны - минимизация использования хендлов.

Стоит задача мониторинга печати. Что у меня получается для каждого принтера:
1. Хендл принтера (OpenPrinter)
2. Хендл нотификации (FindFirstPrinterChangeNotification)
3. Хендл-флаг окончания мониторинга (CreateEvent) - он используется для того, чтобы функция WaitForMultipleObjects сработала в нужный момент (когда мне нужно).
Итого - 3 хендла на принтер, а если принтеров 1000? А ведь это только обязательные хендлы, есть ещё и рабочие. Может это можно сделать проще?


 
DVM ©   (2007-12-05 22:30) [7]


> а если принтеров 1000?

А почему не миллион? Надо вводить ограничения, система не резиновая, например, 256 принтеров.


 
EgorovAlex   (2007-12-05 22:36) [8]

Для сервера печати 1000 принтеров это хоть и тяжеловато, но справляется. А в случае кластеров это уже не проблема, там же может быть несколько спулеров печати, и принтеров на них может быть в сумме гораздо больше 2000 (я знаю реальные конфигурации). Сама система же с этим справляется...


 
Сергей М. ©   (2007-12-07 08:25) [9]


> даже если в длл есть утечка памяти, после выгрузки длл память
> освобождается


Не факт.



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

Форум: "WinAPI";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
15-1217164274
Milk
2008-07-27 17:11
2008.09.21
про инетовских "халявщиков":)


15-1217339422
oldman
2008-07-29 17:50
2008.09.21
Поздравления с днем сисадмина (25 июля) были...


2-1218475782
Павлик
2008-08-11 21:29
2008.09.21
Количество записей в таблице


2-1218043525
MaryM
2008-08-06 21:25
2008.09.21
Проверка орфографии в delphi 2007


15-1217697438
@!!ex
2008-08-02 21:17
2008.09.21
BSOD BSOD BSOD





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский