Просмотр полной версии : Как пользоваться профайлером FlashDevelop?
Пишу интерфейс игры. Почти в каждом объекте есть слушатель события Event.REMOVED_FROM_STAGE, который вызывает функцию dispose, в которой, соответственно, зануляются все ссылки на другие объекты, уничтожаются все объекты bitmapData, удаляются все добавленные слушатели.
Тем не менее, запускаю профайлер флешдевелоп, и вижу, что все объекты, которые были созданы висят в списке live objects.
Трейсы показывают, что функции dispose везде срабатывают. Так вот возник вопрос, а стоит ли верить этому профайлеру?
Или объекты и не должны исчезать из списка live objects?
п.с. При срабатывании функций dispose, потребление памяти падает почти до того же уровня, что был при запуске приложения
Сейчас смотрел у себя - удаленные объекты сразу зануляются, потребление памяти - 0, но не исчезают из списка...
Не сразу, сек 5-10 проходит
Да не может этого быть. Хочу скрин посмотреть.
Я если даже точно все ссылки на объекты удаляю, все равно память до 0 не падает
Если двойной щелчок сделаешь по объекту, который не исчез, авт. перейдешь на вкладку object, где можешь посмотреть какие ссылки на него сохранились. Так кажется.
Да уж наверное и сам догадался ) Толку то. Я же говорю, все объекты зануляю, слушатели удаляю, и тем не менее они все там.
Так кажется.
Мне тоже многое кажется. Но мне надо знать как на самом деле, а не как кажется
Ну, а если догадался то что же не посмотришь где этот объект упоминается?
Чтобы профайлер проверить создай тестовый файл создай в нем объект, по сигналу удали, да проследи по профайлеру.
Ну, а если догадался то, что же не посмотришь где этот объект упоминается?
А я не об этом говорю? Я знаю где они упоминаются, и все зануляю.
Ко всем объектам bitmapData применяю метод dispose(). Но в итоге битмап дата в занимает в памяти 6 мегабайт.
Тупость какая-то...
Причем при запуске показывает количество объектов bitmap data 15, а при удалении 35
Добавлено через 1 час 21 минуту
Разобрался.
Профайлер не глючит, но удалить битмап дату получается только полностью занулив все с ней связанное:
for (i in bitmapsArray) {
bitmapsArray[i].parent.removeChild(bitmapsArray[i]);
bitmapsArray[i].bitmapData.dispose();
bitmapsArray[i].bitmapData = null;
bitmapsArray[i] = null;
}
только после таких манипуляций количество объектов уменьшается
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.