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

Вниз

Динамическое подключение 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.012 c
4-1196809281
GanibalLector
2007-12-05 02:01
2008.09.21
EFOpenError Процесс не может получить доступ к файлу


2-1218091976
inforoom
2008-08-07 10:52
2008.09.21
Програмно выделить узел TreeView1


15-1217745537
Nous Mellon_
2008-08-03 10:38
2008.09.21
Вопрос по регуляркам + php


2-1218369056
h5who
2008-08-10 15:50
2008.09.21
Отрисовка в TMenuItem, стрелка для суб-меню


15-1217164274
Milk
2008-07-27 17:11
2008.09.21
про инетовских "халявщиков":)