Главная страница
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.016 c
15-1217415402
Vlad Oshin
2008-07-30 14:56
2008.09.21
Скорее по администрированию. Как заставить ОС память всю есть?


15-1217196828
DesWind
2008-07-28 02:13
2008.09.21
Поздравляю наш доблесный военно-морской Российский Флот!!!


4-1197096509
happy
2007-12-08 09:48
2008.09.21
Пост запрос


3-1206130189
Леонид
2008-03-21 23:09
2008.09.21
база данных Delphi 7 в формате MS Access


11-1193561717
files32
2007-10-28 11:55
2008.09.21
Русский язык KOL+Lazarus+WinCE