![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Память, сжираемая приложением. [D7, WinXP]
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 метра больше, однако, казалось бы, объект создан - потребность в ресурсах возрастает, все логично. Но в конце процедуры объект-то вроде уничтожается. Однако потребляемая память остается на том же уровне.
Просвятите пожалуйста по этому вопросу.
Kolan (2006-10-12 22:59:00) [21]
> 1. Почему приложения, написанные на Дельфях, при стандартных
> условиях сжирают от 3х метров оперативной памяти?
Мое(последнее) до 10-20 тоже при стандартных, А что должно меньше? :)
>
> При выполнении процедуры приложение нчинает съедать тут
> же на 1,5 метра больше, однако, казалось бы, объект создан
> - потребность в ресурсах возрастает, все логично. Но в конце
> процедуры объект-то вроде уничтожается.
1. Не верь деспетчеру.
2. Винда не спешит отписывать память от процесса, а вдруг тебе опять понадобится.
procedure CreateHistoryFile(filename : string);
var
newHistory : TXMLDocument;
begin
newHistory := TXMLDocument.Create(fmMain);
try
newHistory.Active := true;
newHistory.Version := '1.0';
newHistory.Encoding := 'utf-8';
newHistory.StandAlone := 'yes';
newHistory.AddChild('history');
newHistory.SaveToFile(filename);
newHistory.Active := false;
finally
newHistory.Free;
end;
end;
Zeqfreed (2006-10-12 22:59:00) [22]> Почему приложения, написанные на Дельфях, при стандартных
> условиях сжирают от 3х метров оперативной памяти?
Большинство из этого — системные библиотеки, которое использует приложение.
> Но в конце процедуры объект-то вроде уничтожается. Однако
> потребляемая память остается на том же уровне.
Менеджеру памяти виднее, когда ему освобождать память ;)