Форум: "Система";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
ВнизНе хватает GDI ресурсов Найти похожие ветки
← →
Sergey13 (2002-03-19 10:02) [0]При работе с Делфой(обычно)+какое нибудь еще приложение часто случается сабж. А вчера вообще - одна Делфа и одна открытая форма в редакторе(здоровая, но не так чтоб уж очень) сожрали 98% GDI(смотрел в NU-SysDoctor). В трее пара програмок небольших. Комп вроде не самый плохой - C800/256/GeForce2. Подозреваю, что где то перемудрил с "настроечными" программами. Но где не пойму. Помогите разобраться. Может реестр поковырять где, или еще чего. В общем как бороть?
← →
erik (2002-03-19 14:04) [1]Поставь win 2000 или NT 4.0 там тебе GDI хватит.
← →
-=CrazyFish=- (2002-03-19 14:06) [2]У меня когда то один проект тоже был причиной такого сообщения. Он содержал много Auto Create форм и при запуске пожирал кучу ресурсов, попытаться запустить его из под Delphi означало подвесить систему. Если причина в этом, то нужно по возможности избавиться от Auto Create форм и создавать их динамически во время работы программы, не забывая так же динамически их грохать.
← →
Sergey13 (2002-03-20 08:47) [3]2erik © (19.03.02 14:04)
Не, не хочется. Да и на 98 можно работать, вот только причину бы найти.
2-=CrazyFish=- © (19.03.02 14:06)
С Auto Create все впорядке. Это мы проходили.
Интересное дополнение к вопросу. При открытии формы в Делфе - форма жрет около 35-40% GDI. При запуске готовой программы(без Делфи) только 8-9%. Интересно почему?
← →
Ray (2002-03-20 09:39) [4]Раз не хочется ставить 2000/XP то будиш мучаться с 98. В NT подобных системах нет таких проблем с ресурсами.
А если по делу то насколько большая форма по размеру и что на ней леши и в каких обьемах?
← →
drpass (2002-03-20 11:05) [5]У винды есть определенне количество дескрипторов, которое она способна выделить, оно постоянное и никак не зависит от гигагерцевости проца и мегабайтовости памяти. Это и есть ресурсы GDI. Количество немаленькое, измеряется тысячами. Если учесть, что каждый элемент, имеющий фокус ввода на форме, требует под себя дескриптор, каждый потомок TWinControl и TGraphicsControl жрет гграфический контекст, перо и кисть, можно прикинуть общие затраты GDI по изукрашенности своей проги.
Но полностью сожрать ресурсы у системы, даже 98, тяжеловато. Скорее всего, проблема в винде
← →
Sergey13 (2002-03-21 08:49) [6]2Ray © (20.03.02 09:39)
Да не то чтобы это прихоть. Просто мне для некоторого круга задач нужен "голый" ДОС, но при этом и от винды сильно уходить не хочется. На НТевых системах этого добиться сложнее.
На форме валялось 8 PageControl-ов по 2-5 TabSheet-ов. На каждом кнопочки-гриды-едиты - как обычно. Сейчас переделал на 2 PageControl-а по 4 TabSheet-а. Остальное убрал в другую форму. Но жрать ресурсы меньше не стало. Интересно почему? Такое ощущение, что однажды сожрав не хочет вертать 8-(.
2drpass © (20.03.02 11:05)
>Количество немаленькое, измеряется тысячами.
Про дескрипторы я тоже читал. Но не тысячи же у меня контролов - от силы пол-сотни.
>Но полностью сожрать ресурсы у системы, даже 98, тяжеловато. >Скорее всего, проблема в винде
Вот и мне так кажется. Но где???
← →
GBaca (2002-03-21 10:07) [7]У меня была такая-же проблема. Пришлось менять чужие тексты, полученные "по наследству" ( опыта программирования а Delphi небольшой). Данная проблема исчезла после увеличения памяти до 512 MB.
← →
Sergey13 (2002-03-21 10:27) [8]2GBaca (21.03.02 10:07)
>Данная проблема исчезла после увеличения памяти до 512 MB.
Дак у меня и 256 на половину при этом не загружены. Своп вообще пустой. Хотя 512 конечно лучше 8-)
← →
Lestor (2002-03-21 10:32) [9]>>>>У винды есть определенне количество дескрипторов, которое она способна выделить, оно постоянное и никак не зависит от гигагерцевости проца и мегабайтовости памяти. Это и есть ресурсы GDI. Количество немаленькое, измеряется тысячами. Если учесть, что каждый элемент, имеющий фокус ввода на форме, требует под себя дескриптор, каждый потомок TWinControl и TGraphicsControl жрет гграфический контекст, перо и кисть, можно прикинуть общие затраты GDI по изукрашенности своей проги.
Но полностью сожрать ресурсы у системы, даже 98, тяжеловато.
Как нефиг делать сожрать!!! :-) Особенно если забыть вызвать пару деструкторов или "потерять" пару TWinControl и TGraphicsControl.
А теперь посчитаем - Delphi жрет ресурсы сама немало + каждая открытая форма + каждый контрол, да если еще и с картиночками... :-) А когда запускаешь проект на выполнение, то эти же формы еще хендлов сжирают..:-)
Правильный совет дали - переходи на NT.
← →
Sergey13 (2002-03-21 10:53) [10]2Lestor (21.03.02 10:32)
>Особенно .... "потерять" пару TWinControl и TGraphicsControl.
Что ты имеешь ввиду?
← →
drpass (2002-03-21 12:07) [11]>Lestor
Истратить их в нормальной проге и в Win98 очень трудно. А вот если ты забыл их освобождать в каком-нибудь рисовательно-оконном цикле, то тогда вполне можно. Хотя я давно работаю под NT
← →
AlexDov (2002-03-21 13:39) [12]То же сталкивался с такой проблемой.
Советую поставить MemProof и посмотреть все ли рессурсы корректно освобождаются.
И еще если в преложении много форм, то лучше создовать их не в самом начале как это делает Делфи, а в момент обращения к ним и после закрытия удолять. Это будет чуть помедленее но зато рессурсы будут использоватся только тогда когда они нужны!!!
Удачи.
← →
ValeraVV (2002-03-21 16:50) [13]Еще, в Delphi может стоять создающий и некорректо освобождающий наследника от TWinControl (TCanvas, TFont, TPen) компонент, который на твоей форме и находится, а если ошибка проявляется только в DesignTime, то и MemProof не поможет.
На счет NT конечно хорошо, да вот из-за ее устойчивости мы года два распространяли программу, которая некорректно освобождала ресурсы, под NT работает сносно, а под Win98 у одного заказчика начала валиться программа, мы ему - выкинь 98, ставь NT, а причина то не в этом.
← →
Sergey13 (2002-03-22 09:24) [14]2ValeraVV © (21.03.02 16:50)
>Еще, в Delphi может стоять создающий и некорректо освобождающий >наследника от TWinControl (TCanvas, TFont, TPen) компонент, >который на твоей форме и находится
Валера, ты оказался прав. Ресурсы жрала DBGridEH. Замена 7 этих гридов на родные делфийские вернуло 22% из 26% первоначальных. Жаль, я так ее (DBGridEH) любил...8-(
Всем спасибо
← →
Klive (2002-03-25 08:04) [15]Попробуй в настройках проекта выключить оптимизацию - помнится, мне это как-то раз помогло.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c