Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизВозвращение памяти в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c