Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.04.2012, 03:39
searinox вне форума Посмотреть профиль Отправить личное сообщение для searinox Найти все сообщения от searinox
  № 1  
Ответить с цитированием
searinox

Регистрация: May 2011
Сообщений: 76
По умолчанию Сборщик мусора

Кто знает, какие объекты не собирает сборщик мусора, кроме тех, на которых нацеплены eventListener и которые торчат на stagе и её детях?
Проблема с утечками памяти - куча разнообразных объектов которые по идее должны быть собраны, висят в памяти и накапливаются.

Старый 13.04.2012, 03:45
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 2  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
В 99% случаев не нужно искать неведомую хрень которую не собрал сборщик "хотя должен был". В этих же 99% случаев нужно просто еще раз проверить код на наличие ссылок на объекты которые якобы должны были быть удалены.

Мне помогает. Сборщик тут ни при чем
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 13.04.2012, 12:16
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 3  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
GC не собирает все "живые" объекты. Это все объекты из display list, загрузки (loader'ы), вроде бы - активные таймеры. Плюс все объекты, до которых по ссылках из "живых" можно дайти. В том числе - ApplicationDomain'ы, загруженые в appdomain'ы классы, сохраненные в статических полях этих классов ссылки.

И я полностью согласен с Dukobpa3 - нужно искать в коде, где не удаляются (или добавляются лишние) ссылки на объекты.

Старый 13.04.2012, 12:57
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 4  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
а ещё анонимные функции часто цепляют в замыкание то что совсем не нужно. Если в коде используются анонимные функции то от них надо избавиться. Они могу быть источником оооочень больших проблем.
__________________
:)


Последний раз редактировалось Aquahawk; 13.04.2012 в 20:41.
Старый 13.04.2012, 20:14
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 5  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Aquahawk, насчет функций подтверждаю. Кстати говоря не только анонимные. Вполне возможно где-то вы храните ссылки на эти обычные функции, что тоже приводит к утечкам. Говорю по собственному опыту, такая фигня была. 4000 ссылок на методы сильно съедают память. Профилировщик вам в помощь.

Старый 13.04.2012, 20:40
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 6  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
когда вы храните ссылку на метод, на самом деле это объект класса MethodClosure который хранит ссылку на объект от которого его оторвали. Итого хранение ссылки на метод какого-то объекта равносильно хранению ссылки на объект.
__________________
:)

Старый 13.04.2012, 20:49
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 7  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Итого хранение ссылки на метод какого-то объекта равносильно хранению ссылки на объект
Ну в общем - логично. По сути-то есть всего одна функция, которой просто передается разный this. Мне не совсем понятно, почему при таком раскладе MethodClosure занимает хоть сколько-нибудь заметную память. Ибо это структура из 2 указателей: на функццию и на объект-обладатель.
__________________
...вселенская грусть

Старый 13.04.2012, 21:03
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Кстати говоря об анонимных функциях . Частенько в приложениях бывает надо спрятать объект ( висибл = фалс ) , через некоторое время посл нажатия кнопки например. Причем приложении такая точка может быть всего одна, ну как тут не сделать setTimeout с анонимкой ?))) можно конечно и отдельную функцию написать с одной строчкой , но толку то)
А еще самый лучший вариант TweenMax.to( obj , 5 , { visible:false })
__________________
Марк Tween

Старый 13.04.2012, 21:44
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 9  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Нет, ты неправ! Самый лучший способ - это
Код AS3:
TweenMax.to({}, 0.1, {onComplete: function():void {TweenMax.to({}, 0.1, {onComplete:arguments.callee})}})
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 13.04.2012 в 21:58.
Старый 13.04.2012, 21:46
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
На самом деле замыкание, включает в себя не 2 указателя. Оно включает в себя список (порой очень даже длинный) всех областей видимости, которые доступны там, где оно используется. Иначе не возможно было бы из функции обращаться к глобальным методам и тому, что было импортировано классом.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:30.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.