Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Память, сжираемая приложением. [D7, WinXP]


Страницы:   1 2

Incognito ©   (2006-10-12 22:52:00) 

Здравствуйте

Воникла пара вопросов:
1. Почему приложения, написанные на Дельфях, при стандартных условиях сжирают от 3х метров оперативной памяти?

2. Тут уже конкретная пролема:
Есть процедура создания XML файла при помощи класса TXMLDocument. Выглядит процедура вот так:


procedure CreateHistoryFile(filename : string);
var
 newHistory  : TXMLDocument;
begin
newHistory := TXMLDocument.Create(fmMain);
newHistory.Active := true;
newHistory.Version := '1.0';
newHistory.Encoding := 'utf-8';
newHistory.StandAlone := 'yes';
newHistory.AddChild('history');
newHistory.SaveToFile(filename);
newHistory.Active := false;
newHistory.Free;
end;


При выполнении процедуры приложение нчинает съедать тут же на 1,5 метра больше, однако, казалось бы, объект создан - потребность в ресурсах возрастает, все логично. Но в конце процедуры объект-то вроде уничтожается. Однако потребляемая память остается на том же уровне.

Просвятите пожалуйста по этому вопросу.


Ketmar   (2006-10-15 19:09:00) [1]

>[19] ors_archangel(c) 15-Oct-2006, 15:08
>уточняю: сделать что-нить автоматическипри выходе
>из процедуры, а не "руками", почему бы и нет?
вот строки, например. и динамические массивы. и интерфейсы. сплошная автоматика. без рук и ног.

>перестарался: когда в Делфи отключаешь Stop on Delphi
>exceptions - то трудно искать ошибки, а иначе - уже
>невозможно использовать исключения как исключения
среда -- она настраивается. полазить по менюшкам -- столько интересного узнаешь...

>кажется, правильней говорить "ортогональный"
не надо употреблять термины, значение которых теряется во мгле разума.

>стоит Kylix и .NET) они не очень-то хотят улучшать
>компилятор и язык, собственно, программирования
постоянно улучшают, аднака...


Anatoly Podgoretsky   (2006-10-15 15:25:00) [2]


> Паскаль воще сам кого хошь убью :)

Не похоже, похоже, что хочешь Борланда убить.


Anatoly Podgoretsky   (2006-10-15 15:10:00) [3]

ors_archangel ©   (15.10.06 15:08) [19]
Барин, может вам Дельфи настроить и заодно научиться пользоваться точками останова?


ors_archangel   (2006-10-15 15:08:00) [4]


> >раз хотелось сделать какие-нить действия при выходе из
> >процедуры
> с try ... finally, видимо, ни разу не знаком.

уточняю: сделать что-нить автоматическипри выходе из процедуры, а не "руками", почему бы и нет? (знаком я с finally, и, кстати, считаю, что и здесь Борланд перестарался: когда в Делфи отключаешь Stop on Delphi exceptions - то трудно искать ошибки, а иначе - уже невозможно использовать исключения как исключения, а не как только ошибки - как другой управляющий элемент, в смысле, IDE будет постоянно приставать :(

> язык в целом менее строгий

почему тогда в С++ нужно постоянно писать   а = (б) в, по-моему, типизация здесь более строгая, чем в Делфи, мне кажется, правильней говорить "ортогональный"

> >от Борланда ведь не дождёшся
> ага. не любят они "как все", любят "как удобно".

Я имею в виду, что Борланд (или как его там), конечно, отличная (считаю, лучшая) комания по разработке коммерческого ПО быстрой разработки, известная мне, но тем не менее, прилагая титанические усилия (например, чего стоит Kylix и .NET) они не очень-то хотят улучшать компилятор и язык, собственно, программирования, чего я не понимаю ну никак, а за Паскаль воще сам кого хошь убью :)


Vovan#1   (2006-10-14 01:16:00) [5]

> Ложное утверждение

Утверждение о том, что это утверждение ложное - ложно.


Ketmar   (2006-10-13 17:11:00) [6]

>[14] ors_archangel(c) 13-Oct-2006, 15:12
>раз хотелось сделать какие-нить действия при выходе из
>процедуры
с try ... finally, видимо, ни разу не знаком.

>Си-плю-плю вроде так умеет, если я не обшибаюсь
ошибаешься.

>переходим на Си, товарищи
скатертью дорога.

>от Борланда ведь не дождёшся
ага. не любят они "как все", любят "как удобно".


RWolf   (2006-10-13 17:00:00) [7]

С++ уничтожает на выходе из блока только стековые объекты. С динамической памятью дела обстоят так же, как и в Дельфи, утечек в С++ приложениях не меньше. Зато возможностей допустить ошибку намного больше, т.к. язык в целом менее строгий и более сложный в использовании. Лучше уж писать на Дельфи, но как положено :)


Игорь Шевченко   (2006-10-13 15:13:00) [8]


> 1. Почему приложения, написанные на Дельфях, при стандартных
> условиях сжирают от 3х метров оперативной памяти?


Ложное утверждение


ors_archangel   (2006-10-13 15:12:00) [9]


> Но в конце процедуры объект-то вроде уничтожается.

В Делфи - нет, в чём, мне кажется, есть недостаток, мне не раз хотелось сделать какие-нить действия при выходе из процедуры (области видимости, говоря более обще), но ...
Си-плю-плю вроде так умеет, если я не обшибаюсь, переходим на Си, товарищи, будем как все, от Борланда ведь не дождёшся


atruhin   (2006-10-13 05:09:00) [10]

> fastMM - аналог, только работае по другому..

+ проще в использовании и удобнее.


Kolan   (2006-10-12 23:52:00) [11]


> Метод Kolan-a с try finally тоже не помог ((

Ясен пень, хоть бы справку почитал. Так правильней просто...

> Буду искать MemProof
>

Ищи конечно.

fastMM - аналог, только работае по другому..


Incognito   (2006-10-12 23:45:00) [12]

Indy не пользую, с инетом работаю через WinInet.

Метод Kolan-a с try finally тоже не помог ((

Буду искать MemProof


Ketmar   (2006-10-12 23:41:00) [13]

>[8] Incognito 12-Oct-2006, 23:34
>Вопрос №1 - кто такие индейцы?
Indy. у меня к ним нелюбовь по личным причинам. %-)


Kolan   (2006-10-12 23:35:00) [14]


> это встроенный инструмент или прога какая сторонняя?

Сторонняя работает хорошо, строку покажет.


Incognito   (2006-10-12 23:34:00) [15]


Ketmar ©   (12.10.06 23:19)

ищи memory leaks. и прочие leaks. выкинь индейцев, используй API. выкинь всякие формировалки XML, сделай руками. выкинь VCL, сделай на API. поможет. %-)


На API написать - квалификации не хватит, к сожалению. Не программист я все-таки.. так, увлекающийся ) Без VCL тоже не обойдусь. по той же причине.
Вопрос №1 - кто такие индейцы? И как с ними бороться? ))
Вопрос про MemProof - это встроенный инструмент или прога какая сторонняя?


Суслик   (2006-10-12 23:33:00) [16]

1 скачать в www.sourceforge.net fastMM
2 разобраться с readme
3 установить
4 выяснить, где утекает память.


Kolan   (2006-10-12 23:23:00) [17]


> поможет

Убить лишнее время. Хорошо если есть :)


Kolan   (2006-10-12 23:20:00) [18]


> Причем моя программа имеет тенденцию к пожиранию все большего
> и большего колическтва ресурсов с течением времени.
>

А вот это плохо - утечка наверно. Для D7 попользуй MemProof


Ketmar   (2006-10-12 23:19:00) [19]

>[3] Incognito 12-Oct-2006, 23:15
>Причем моя программа имеет тенденцию к пожиранию все
>большего и большего колическтва ресурсов с течением
>времени.
ищи memory leaks. и прочие leaks. выкинь индейцев, используй API. выкинь всякие формировалки XML, сделай руками. выкинь VCL, сделай на API. поможет. %-)


Incognito   (2006-10-12 23:15:00) [20]

Тогда ещё вопрос... Вообщем, выкладываю все как есть.
Программа сидит в трее. Главной формы нет (т.е. она есть, но скрыта). По правому клику через меню можно вызвать форму с настройками, эбаут и ещё одну - статистику.

Суть программы сводится к периодическому скачиванию из инета определенного html файла, вырезания из него нужных данных и, запись данных в лог (почему-то вздумалось сделать его в формате XML). + исходя из настроек пльзователя, вывод этих данных в балон хинт.

Вот собственно и все. Все уже написано и относительно исправно работает, но меня смущает тот факт, что эта, простите, хрень, жрет порядка 10 мегабайт!!!

В то время как практически абсолютно аналогичный GisMeteoTray (погоду скачивает периодически и в трее об этом иконкой сигназизирует. При клике тот же балон хинт и подробной инфой), дак вот, он жрет всего лишь 500 Кило, что в 20 раз меньше.

Причем моя программа имеет тенденцию к пожиранию все большего и большего колическтва ресурсов с течением времени.

Вообщем, нужен мне совет ))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо