PDA

Просмотр полной версии : Как пользоваться профайлером FlashDevelop?


goodguy
09.05.2011, 10:18
Пишу интерфейс игры. Почти в каждом объекте есть слушатель события Event.REMOVED_FROM_STAGE, который вызывает функцию dispose, в которой, соответственно, зануляются все ссылки на другие объекты, уничтожаются все объекты bitmapData, удаляются все добавленные слушатели.
Тем не менее, запускаю профайлер флешдевелоп, и вижу, что все объекты, которые были созданы висят в списке live objects.
Трейсы показывают, что функции dispose везде срабатывают. Так вот возник вопрос, а стоит ли верить этому профайлеру?
Или объекты и не должны исчезать из списка live objects?

п.с. При срабатывании функций dispose, потребление памяти падает почти до того же уровня, что был при запуске приложения

fish_r
09.05.2011, 11:27
Сейчас смотрел у себя - удаленные объекты сразу зануляются, потребление памяти - 0, но не исчезают из списка...
Не сразу, сек 5-10 проходит

goodguy
09.05.2011, 11:46
Да не может этого быть. Хочу скрин посмотреть.

Я если даже точно все ссылки на объекты удаляю, все равно память до 0 не падает

fish_r
09.05.2011, 11:49
Если двойной щелчок сделаешь по объекту, который не исчез, авт. перейдешь на вкладку object, где можешь посмотреть какие ссылки на него сохранились. Так кажется.

goodguy
09.05.2011, 12:09
Да уж наверное и сам догадался ) Толку то. Я же говорю, все объекты зануляю, слушатели удаляю, и тем не менее они все там.
Так кажется.
Мне тоже многое кажется. Но мне надо знать как на самом деле, а не как кажется

fish_r
09.05.2011, 12:26
Ну, а если догадался то что же не посмотришь где этот объект упоминается?
Чтобы профайлер проверить создай тестовый файл создай в нем объект, по сигналу удали, да проследи по профайлеру.

goodguy
09.05.2011, 12:30
Ну, а если догадался то, что же не посмотришь где этот объект упоминается?
А я не об этом говорю? Я знаю где они упоминаются, и все зануляю.
Ко всем объектам 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;
}



только после таких манипуляций количество объектов уменьшается