Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
14-58878
Islander
2003-08-28 17:07
2003.09.18
Как быстро считать бинарник в переменную типа string?


14-58844
Всеволод Соловьёв
2003-08-30 23:10
2003.09.18
DMClient - сохранение параметров


14-58919
Vlad Oshin
2003-08-28 10:29
2003.09.18
опытные программисты произведут отправку Вашего письма


14-58885
FRAME
2003-08-29 17:18
2003.09.18
Will code HTML for FLOOD?


1-58670
pulser
2003-09-04 21:03
2003.09.18
ограничение объема текста в TMemo





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