Главная страница
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.013 c
14-44905
cvv
2003-06-27 10:12
2003.07.14
Где взять инфу про сокеты?


14-44866
Sedunov Vitaly
2003-06-27 10:17
2003.07.14
EhLib, RxLib for Delphi 7


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


3-44603
DarkMan
2003-06-21 08:40
2003.07.14
Работа на Delphi 6 с MySQL v4.0.12


6-44776
AVovikA
2003-05-05 18:22
2003.07.14
Как на сервере ServerSocket проверить живой ли ClientSocket