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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VirtualStringTree потребляет память, Тенденция к росту потребленной ОЗУ 
V
    Опции темы
pethead
  Дата 2.6.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



есть код работы с VST

vstCurrentLog - TVirtualStringTree

код добавки узла с данными

объект TMyObj создается и сам себя закидывает в узел VST.

Код

var
 NewNode:PVirtualNode;
 NodeData:PTreeRec;
 tlm:TMyObj;

    NewNode:=vstCurrentLog.AddChild(nil);
    NodeData:=vstCurrentLog.GetNodeData(NewNode);
    NodeData.Obj:=tlm;
    TMyObj(NodeData.Obj).PCurrentLogNode:=NewNode;
    SendMessage(vstCurrentLog.Handle,WM_VSCROLL,SB_BOTTOM,0);


код удаления узла
(в контексте кода объекта TMyObj содержащего указатель на узел)
объект TMyObj уничтожается и сам себя удаляет из VST.

Код

 if(Assigned(PCurrentLogNode))then begin
  vstCurrentLog.DeleteNode(PCurrentLogNode);
  vstCurrentLog.Refresh;
 end;



теперь если это все проделывать очень часто и хаотично то наблюдается "жор" памяти - TaskManager отображает тенденцию к росту потребленной ОЗУ.

что делаю не так?

*если код "закидывания" в VST "забанить" то жора ОЗУ нет. т.е. сам объект TMyObj создается и уничтожается корректно.



Это сообщение отредактировал(а) pethead - 2.6.2009, 11:03
PM MAIL WWW ICQ   Вверх
kami
Дата 2.6.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Воспользуйтесь FastMM - он покажет, где именно идут утечки.
PM MAIL WWW   Вверх
pethead
Дата 2.6.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



утечек связанных с VST не выявилось - но рост ОЗУ наблюдается.

Это сообщение отредактировал(а) pethead - 2.6.2009, 13:59
PM MAIL WWW ICQ   Вверх
pethead
Дата 2.6.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



кстати вот пробуем демку Advanced из примера VirtualStringTree.
там 2 кнопки - дабавить 100000 элементов и потом очистить. 
так вот если это делать часто и жор памяти есть: после очистки уже не то кол-во ОЗУ, и с каждым разом все больше разница.
PM MAIL WWW ICQ   Вверх
kami
Дата 2.6.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Цитата(pethead @  2.6.2009,  15:13 Найти цитируемый пост)
после очистки уже не то кол-во ОЗУ, и с каждым разом все больше разница.

Определять потребление памяти программы в таскменеджере не стоит.
PM MAIL WWW   Вверх
pethead
Дата 2.6.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



однако через неделю там уже 1Гб озу отъеден!
PM MAIL WWW ICQ   Вверх
kami
Дата 2.6.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Цитата(pethead @  2.6.2009,  20:12 Найти цитируемый пост)
однако через неделю там уже 1Гб озу отъеден!

От это уже другое дело.
Посмотри, такой же вопрос. Может, поможет smile

PM MAIL WWW   Вверх
Pavelbej
Дата 2.6.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(pethead @  2.6.2009,  11:02 Найти цитируемый пост)
код удаления узла
(в контексте кода объекта TMyObj содержащего указатель на узел)
объект TMyObj уничтожается и сам себя удаляет из VST.
Код


 if(Assigned(PCurrentLogNode))then begin
  vstCurrentLog.DeleteNode(PCurrentLogNode);
  vstCurrentLog.Refresh;
 end;

теперь если это все проделывать очень часто и хаотично то наблюдается "жор" памяти - TaskManager отображает тенденцию к росту потребленной ОЗУ.


А в событии onFreeNode память осфобождаете? Пример из статьи:
Код

//------------------------------------------------------------------
procedure TForm1.VTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
  Data: PDATA;
begin
  Data := Sender.GetNodeData(Node);
  if Assigned(Data) then
    Finalize(Data^);
end;

PM MAIL   Вверх
pethead
Дата 3.6.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



да, спасибо. забыл про 

Код

var
 PTreeData:PTreeRec;
begin
 PTreeData:=Sender.GetNodeData(Node);
 if(Assigned(PTreeData))then
  Finalize(PTreeData^);
end;



причем в другом применении компонента для отображения много тысячных данных mysql ведь написал OnFreeNode
а тут забыл и вот результат.

спасибо!
PM MAIL WWW ICQ   Вверх
CodeMonkey
Дата 3.6.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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





--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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