Главная страница
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.026 c
1-44750
Alex_x
2003-07-01 15:19
2003.07.14
Try....except не работает


14-44819
Достатый
2003-06-25 23:28
2003.07.14
Забодало. Скупой платит дважды.


1-44760
Евгений Р.
2003-07-01 20:30
2003.07.14
работа с MethodAddress


3-44572
Vlad2
2003-06-20 11:51
2003.07.14
Указатель на буфер записи базы данных после SetKey?


14-44907
artemkin
2003-06-28 09:29
2003.07.14
Запуск 98-х виндов