Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уничтожение формы и освобождение памяти, На Delphi 7 работает, а на XE2 - нет 
:(
    Опции темы
naparNIK
Дата 27.6.2012, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Есть две формы (первая создается автоматически, вторая - "вручную"). После закрытия второй формы память не освобождается, нашёл в гугле такой пример:
Форма 1
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  t: TForm;
begin
  t := TForm2.Create(Application);
  t.Show;
end;


Форма 2
Код

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

Проблема в том, что в программе, скомпилированной на Delphi 7 все работает нормально, память освобождается, а на XE2 - нет  smile 

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  FormClose.rar 670,53 Kb
PM MAIL   Вверх
Illusion Dolphin
Дата 27.6.2012, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



У меня всё освобождается. А что именно не освобождается? Поробуйте включить в файл проекта ReportMemoryLeaksOnShutdown :
Код

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  ReportMemoryLeaksOnShutdown := True;
  ххх
end.

У меня на XE2 при 32/64 всё хорошо, утечек никаких нету. 


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
naparNIK
Дата 27.6.2012, 19:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



При открытии второй формы потребляемая программой память возрастает. При закрытии - должна освобождаться. Но на ХЕ2 например, как было 1300 Кб после открытия второй формы так и осталось после её уничтожения. caFree - ведь должно освобождать память при закрытии?
PM MAIL   Вверх
Illusion Dolphin
Дата 27.6.2012, 19:39 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



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


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
naparNIK
Дата 27.6.2012, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



А что и чем мерять?  smile  И почему тогда при закрытии второй формы в скомпилированной на D7 программы используемая память (которая отобр. в дисп. задач) уменьшается, а на ХЕ2 не меняется? программы ведут себя по разному? 
PM MAIL   Вверх
Illusion Dolphin
Дата 27.6.2012, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Ну как минимум Process Explorer показывает более детальную информацию в разделе Perfomance. 
Различие между Delphi7/XE2 в абсолютно разном менеджере памяти - новые делфи используют FastMM, вероятно новый менеджер памяти не выделяет физическую память т.к. высвободилось совсем немного (это очень затратная по ресурсам операция).  Думаю, высвобождение будет заметно при больших объёмах памяти.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
naparNIK
Дата 27.6.2012, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Цитата

Думаю, высвобождение будет заметно при больших объёмах памяти.

 smile Да, вы правы! При создании второй формы в 10 imag'ов загрузил битмапы (~50 Мб). При закрытии формы память освободилась.
Цитата

в разделе Perfomance

Я так и не нашёл его.  А чем отличаются Private Bytes от Working Set? Private Bytes - это то, что показывает диспетчер задач  (частный рабочий набор), да?
PM MAIL   Вверх
CodeMonkey
Дата 27.6.2012, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



naparNIK, почитай. Там всё написано - и почему так происходит, и чем мерять, и когда кричать караул, а когда - не надо.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
AlekXL
Дата 28.6.2012, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 2.5.2008

Репутация: нет
Всего: 0



вообще , встроенный менеджер памяти не всегда отдает память системе, когда ты ее освобождаешь. У него есть свой кэш. Это если речь о небольшом блоке.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.