![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| uwannadie |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
заполняю VirtualStringTree данными, имеющими следующую структуру
Заполняется дерево следующим образом
в событии OnFreeNode написано следующее:
вопрос: почему при удалении всех узлов дерева, последующем выполнение
и заполнении дерева аналогичными данными объем занимаемой памяти увеличивается. при этом FastMM ругается на утечки памяти:
--------------------
|
||||||||||
|
|||||||||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Хм, наугад - утечки UnicodeString, а поля в записи типа String. Какая версия Делфи? Может это утечки и не в дереве?
Ну и можно попробовать освобождать память, вручную затирая строки:
|
|||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
пробовал, перед тем, как создавать тему. не помогает
RAD Studio 2010 Architect Это сообщение отредактировал(а) uwannadie - 4.4.2010, 16:27 --------------------
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Из лога FastMM приведен только конец. Самое интересное - в нем фигурирует TstringList, а в приведенном коде его не наблюдается. Смотри по полному логу, где он (TStringList) создается и уничтожается.
|
|||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
при всем этом программа обрабатывает данные без сучка и задоринки, но если раз 10-12 очистить и заполнить дерево аналогичными данными, то размер программы в оперативке легко возрастает до 50-60 мб
--------------------
|
|||
|
||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Так может все-таки дело действительно не в записях дерева, если ручное затирание не помогает?
Может попробовать не очищать узлы в дереве и посмотреть добавятся в этом случае новые утечки или нет? По идее должны, хотя как работают новые версии Делфи я не знаю, знаком только с Д7. Если добавятся, то это уже точно будут из дерева, и следовательно нынешние вызваны чем-то другим. |
|||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
стринглист освобождается в другом месте. в нем находится список http ссылок (а-ля зеркал обновления). --------------------
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
||||
|
||||
| uwannadie |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
вот создание данного списка
вот освобождение памяти
--------------------
|
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
||||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
у меня в программе он единственный (по-крайней мере я больше не создавал)
--------------------
|
|||
|
||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
В целом немного необычно, когда глобальнае переменная создается по одной кнопке и уничтожается по другой. Обычно я например ставлю это в процедуры создания/удаления формы. А в теле процедур использую Clear. Ведь если кнопка сохранить (вторая процедура) нажата не будет, то список не очистится. А при повторном вызове первой процедуры, возникнет утечка памяти.
|
|||
|
||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Читай, пожалуйста, сообщения полностью. В частности:
Если в логе идут только адреса, то нужно включить в опциях проекта Debug information и include TD32 debug Info. В D7 первая находится в закладке Compiler а вторая на закладке Linker. После этого сделать Build проекту, удалить старый лог и запустить программу для генерации нового. Добавлено через 1 минуту и 7 секунд +много необычно |
||||
|
|||||
| uwannadie |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
нашел, на что ругается FastMM
есть у меня процедура, в которой содержимое дерева сохраняется в список (какашками не кидаться за индуский код, т.к. это пре альфа-альфа-альфа версия программы)
ругается везде на:
остальные утечки, судя по номерам строк, завязаны на реализации механизма поиска файлов в делфи --------------------
|
||||
|
|||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Отлично. Теперь осталось корректно освободить память от NodeList. После этого какие-то утечки еще остаются?
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |