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

Вниз

Не хватает 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
1-65107
Jen_Bond
2002-06-07 01:32
2002.06.20
Как можно узнать....


1-65135
SVS
2002-06-07 12:31
2002.06.20
Прочесть ячейку в таблице в документе Word


1-65078
Magic
2002-05-28 15:26
2002.06.20
Свойство Font в StringGrid.


14-65220
Evgeny
2002-05-17 12:41
2002.06.20
Даже потрепаться модератор и то не дает


7-65257
Sergey13
2002-03-19 10:02
2002.06.20
Не хватает GDI ресурсов