Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.006 c
3-64901
kserg@ukr.net
2002-05-29 10:33
2002.06.20
DBImage - непонятный глюк с визуализацией формы...


1-65071
Ivan Voronov
2002-06-10 13:11
2002.06.20
Просмотр содержимого архива


6-65202
Alex_s
2002-03-27 06:11
2002.06.20
Как перехватить сообщения от сервиса Messenger в NT b W2000?


4-65297
PavelOKES
2002-04-18 06:59
2002.06.20
Диалог


1-65101
Демон
2002-06-07 01:17
2002.06.20
2 вопроса про Таймер!!!





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