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

Вниз

Плодимся и размножаемся.   Найти похожие ветки 

 
LinOS ©   (2003-06-26 07:47) [0]

Отлаживаю программу и не понимаю как Delphi освобождает память?
Есть MainForm из него вызываю другие
try
OtherForm := TOtherForm.Create(self);
OtherForm.ShowModal;
finally
OtherForm.Free;
end;

В результате при каждом вызове формы OtherForm размер памяти, занимаемой моим приложением неуклонно растет.
Что делаю не так?


 
Skier ©   (2003-06-26 08:32) [1]

>LinOS © (26.06.03 07:47)
Так будет корректней (хотя это не суть, т.к. форма
освобождаеттся правильно)
OtherForm := TOtherForm.Create(self);
try
OtherForm.ShowModal;
finally
OtherForm.Free;
end; //try

Видимо (?) проблема где-то в другом месте...


 
Anatoly Podgoretsky ©   (2003-06-26 09:25) [2]

Ошибка в OtherForm


 
LinOS ©   (2003-06-26 10:24) [3]

А какая может быть ошибка?


 
ZeroDivide ©   (2003-06-26 10:43) [4]

Все правильно, а ошибка действительно в OtherForm.
Посмотри внимательно код твоей формы, это он гадит в память. Форма то освобождается корректно, а вот объекты созданные ей вероятно нет. Чтобы они тоже освободились поставь им парент OtherForm, тогда можно будет не следить за их освобождением,
OtherForm.Free их освободит.


 
Карелин Артем ©   (2003-06-26 10:44) [5]

>В результате при каждом вызове формы OtherForm размер памяти, занимаемой моим приложением неуклонно растет.
>Что делаю не так?
Смотришь в диспетчере задач? А он разве показывает общий обьем памяти для процесса? А если свернуть-развернуть прогу показатель изменятся???


 
DiamondShark ©   (2003-06-26 10:47) [6]

Тут одно из двух:

1) Грабли где-то в недрах ОтхерФорм.

2) Нормальное поведение менеджера памяти. Если между созданиями ОтхерФорм ещё что-то делается с памятью, например, какая-либо работа со строками, создание ещё чего-то, то занятая ранее под ОтхерФорм память вполне может стать фрагментированной, и менеджер вынужден запросить у системы новую.

В первом случае с вопросами типа "А какая может быть ошибка?" -- к телепатам.

Второй случай -- штатное поведение. Менеджеру памяти надо "разогнаться", после того, как образуется кой-какой резерв начнёт эффективно работать механизм дефрагментации и потребность в памяти "устаканится". Особенно, если производятся более-менее однообразные действия.



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
3-44576
KSergey
2003-06-13 13:35
2003.07.14
TDataSet в режиме редактирования и исключение


9-44536
Shadow
2003-01-26 20:45
2003.07.14
Как нарисовать изометрическую сетку?


1-44644
NAlexey
2003-07-01 11:15
2003.07.14
Ошибка записи в поток.


11-44618
Bomberman
2002-11-04 22:43
2003.07.14
SpinEdit


14-44817
Opera
2003-06-24 12:16
2003.07.14
Shell