![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Модрон-ветеринар
|
Есть некая функция для управления слайд-шоу.
Допустим, в процессе ее работы создается массив (не как локальная переменная, а в области видимости _root), в него заносятся битмапные данные из библиотеки. Используются (аттачатся куда нужно и т. д.). Функция отрабатывается снова. Создаю массив с тем же именем, понятно, что он опять будет пустым и опять готовым к заполнению битмапой. Вопрос. А нужно ли было освобождать память от старой битмапы? Наверное, недостаточно было просто создать новый массив с тем же именем? К сожалению, для экспериментирования недостаточно времени, а теория у меня прихрамывает.
__________________
Идите первым! |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Нужно, если на старую битмапу есть ссылки. Если нет — смело создаем новый массив ("затирая" предыдущий).
По-идее сборщик мусора должен отработать и очистить память. Как дела обстоят в реальности — не понятно Если уж совсем задаться целью, то можно перед созданием нового массива пробежаться по элементам и dispose для каждого. Потом обнулить ссылки и уже после этого создавать новый массив. А вообще странно, зачем нужен dispose для битмапы, если ссылку на нее можно просто переназначить на другую битмапдату (соответственно сделать первую битмапу "клиентом" для мусорщика). Как пишут в хэлпе — чтобы освободить память. Цитата:
__________________
hauts.ru Последний раз редактировалось Hauts; 29.03.2011 в 21:12. |
|
|||||
|
Модрон-ветеринар
|
К сожалению, в работе функции используется сторонний большой класс, и могут ли там остаться ссылки на битмапу, или нет, незвестно, а в детали его работы вникнуть не успею.
Попробую ограничиться обязательным dispose для всех элементов массива. Добавлено через 3 минуты Цитата:
В общем, вопрос остался для меня пока открытым.
__________________
Идите первым! Последний раз редактировалось mooncar; 29.03.2011 в 21:14. |
|
|||||
|
listener
|
dispose() работает хорошо, память освобождается четко, тем более, я так понял, у вас никаких проблем с ее использованием в коде не возникает, в чем тогда проблема? Используйте, конечно. Ее для того и сделали. Заметьте, dispose() нет, скажем, у массива. Это я к тому, что случай с битмапдатой несколько отличен от остальных.
Просто переназначить ссылку не тру. Особенно, если "количество элементов может быть разным от одного использования до другого". |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|