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

Вниз

Возвращение памяти в 95/98   Найти похожие ветки 

 
Тих   (2003-09-05 22:01) [0]

Отлаживаю, стало быть, программу. Она активно использует динамическое выделение памяти и прочие модные штучки навроде XML и ADO. По коду утечек памяти старался по максимуму не допускать. TaskManager в Win2000 выказывает нормальный баланс оной и после суток назойливого тестирования. Беда в 98 - после трех часов относительно стабильной работы вываливаются ошибка "нехватка памяти", в контролах вместо букв - ероглифы. Ежели запустить параллельно еще что-нибудь навроде MSSQL Enterprise manager и хором все офисные приложения, то на то, чтобы положить систему, хватает 15-ти минут.
Вот думаю - или порадовать заказчика тем, что 98ую в следующем году прекратят поддерживать и ему придется разориться на 128 мб и win2000Prof, или же справиться с вашей помощью с этой бедой.

Почему-то 95-я в моем случае работает даже стабильнее 98-й.

Где-то год назад или около того кто-то тут активно подобную проблему обсуждал...


 
nikkie ©   (2003-09-05 22:09) [1]

имхо, с ресурсами не аккуратно обращаешься. посмотри в Resource Meter, что происходит. приведи точное сообщение об ошибке, сдается мне это вовсе не "нехватка памяти".


 
Тих   (2003-09-05 22:32) [2]

Более-менее точное сообщение об ошибке - "Нехватка памяти. Закройте некоторые приложения для продолжения работы".
Под IDE тем более не выходит отдебажить - сама IDE 16 мегабайт отжирает, а потом и виснет вместе с отлаживаемой программой.
Назначил обработчик Applicaton.OnException и подцепил JCL - они ничего не ловят. Ресурсы? Один шаренный ImageList с 70-ю картинками 16*16 на все 50 форм и 50 Frame-ов (создаваемых и освобождаемых динамически по мере необходимости :-). Кое-где на DBGrid-ах да, рисую, но прямо на канве в OnDrawColumnCell.
Есть 2 ListView, с картинками, используются крайне редко (валится до начала их использования)

Объектов GDI в TaskManager - 248 (у IE - 250, у ICQ - 450)

В общем, опыта у меня маловато )

Кто такой Resource Meter?


 
nikkie ©   (2003-09-05 22:41) [3]

>Более-менее точное сообщение об ошибке
а привести все-таки точное сообщение слабо?

>Кое-где на DBGrid-ах да, рисую, но прямо на канве в OnDrawColumnCell.
вполне вероятно, что тут и происходит утечка ресурсов, если ты некорректно пытаешься использовать API.

>Кто такой Resource Meter?
программка такая в Win9x (в System Tools вроде) - только по умолчанию она не ставится, надо доставить.


 
Тих   (2003-09-05 22:42) [4]

А, вот еще - иногда в процессе разработки в design-time при попытке открыть на редактирование очередную форму вываливается
"Win32 Api function failed".
Скудновато.


 
Тих   (2003-09-05 22:48) [5]

> а привести все-таки точное сообщение слабо
Дословно _сейчас_ не могу, 98-я стоит у заказчика, если и ошибся в цитировании - то может быть только в порядке слов. Вываливается обычный MessageBox, а не системное сообщение об ошибке со списком содержимого регистров и пр.

Рисую же везде однотипно, тут ошибок наделать сложно :)

procedure TFraAutos.grAutosDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
if (Column.Title.Caption = "") then
FrmImageList.ilGray.Draw(TDBGrid(Sender).Canvas, Rect.Left, Rect.Top, 50);
end;


 
nikkie ©   (2003-09-06 00:54) [6]

в коде проблем нет. может я и не прав с подозрением на ресурсы - насколько мне помнится, там должно возникать что-то вроде "not enough system resources". но если будет возможность, я бы все же проверил Resource Meter-ом.

а на тему обычной утечки памяти - может попробовать проверить MemProof-ом?
http://www.automatedqa.com/products/memproof.asp


 
Тих   (2003-09-06 01:19) [7]

Ага, спасибо ) качаю.


 
Zacho ©   (2003-09-06 10:15) [8]


> Тих (05.09.03 22:42) [4]
> А, вот еще - иногда в процессе разработки в design-time
> при попытке открыть на редактирование очередную форму вываливается
>
> "Win32 Api function failed".

Точно - нехватка GDI ресурсов.


 
Тих   (2003-09-06 13:32) [9]

Всем спасибо. Дело было так: для быстрого фильтра по алфавиту в справочнике я динамически создавал в одном компоненте 30 SpeedButton-ов с картинками, одновременно открытыми могли быть 5-6 таких справочников. Поменял на обычные кнопки в ущерб красивости. Вроде как помогло.



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.023 c
1-58682
WinLamka
2003-09-04 19:25
2003.09.18
Чужие окошки =)


3-58597
Uzver
2003-08-26 15:55
2003.09.18
Копирование таблиц Paradox


14-58852
хм
2003-08-31 01:18
2003.09.18
Что такое сабж?


1-58628
Skif Swarogich
2003-09-05 14:27
2003.09.18
String to integer


7-58938
R4D][
2003-07-06 16:15
2003.09.18
Хэндл и имя фаила.