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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.01.2013, 17:43
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 21  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
2 all
на счет функций, которые держат объект (профайлер говорит что таких функций аж 10 штук, если я верно понимаю). слушатели удаляются, анонимных функций нет, могут ли быть еще какие то узкие места, когда функция может держать объект?

2 wvxvw
если системой будут пользоваться весь день на слабой машинке, то браузер неплохо начнет тормозить. конечно, утечку удалось значительно сократить, однако не факт что и утечка по 2-3 мб не приведет к недовольству заказчика.

2 Котяра
конечно я пробовал чистить память, более того, я чищу память вручную в профайлере каждый раз, когда делаю снапшоты памяти

Старый 14.01.2013, 18:23
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 22  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
если системой будут пользоваться весь день на слабой машинке, то браузер неплохо начнет тормозить. конечно, утечку удалось значительно сократить, однако не факт что и утечка по 2-3 мб не приведет к недовольству заказчика.
Там на графике показан старт приложения - память увеличилась и осталась на плато. Оно не может загрузиться и не зарезервировать память под всё что использует.

Утечка - это когда в приложении ничего нового не загружается/отображается, а память равномерно ползёт вверх и не собирается останавливаться.

Цитата:
могут ли быть еще какие то узкие места, когда функция может держать объект?
Если объект передал свой метод в качестве параметра другому объекту. И если при этом тот другой объект ещё нужен и его не сносят, а первый _не_ нужен - то его второй объект будет держать за метод.

Если в 2-х словах: "Передали ссылку на метод - то же самое, что передали ссылку на объект"

Регистрация слушателя в диспетчере - это частный случай передачи метода объекту.

Сюда не относится ссылка на метод внутри самого объекта (как и подписка на себя же). Циклические ссылки на себя _не_ мешают GC удалять объект.

Старый 14.01.2013, 18:28
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 23  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Не используются-ли в проекте классы измерителей сторонних разработчиков? Помню когда-то чью-то библиотеку использовал для телеметрии так из-за неё память и текла).

Старый 15.01.2013, 13:48
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 24  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
2 expl
Цитата:
Утечка - это когда в приложении ничего нового не загружается/отображается, а память равномерно ползёт вверх и не собирается останавливаться.
однако тот факт, что ГЦ не высвобождает память из под чего то даже принудительно не есть хорошо, а ГЦ не чистит память потому что написано где то что то не так.
так или иначе это приводит к зависанию браузера -> недовольство

Цитата:
Если объект передал свой метод в качестве параметра другому объекту.
спасибо! я так понимаю, достаточно: _exFunction = null;


2 Sintesis
Цитата:
Не используются-ли в проекте классы измерителей сторонних разработчиков
нет, ничего подобного не используется.

Старый 15.01.2013, 15:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 25  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
однако тот факт, что ГЦ не высвобождает память из под чего то даже принудительно не есть хорошо, а ГЦ не чистит память потому что написано где то что то не так.
так или иначе это приводит к зависанию браузера -> недовольство
Вы же работаете с огромным фреймворком, судя по графу, который вы показали, если к этому времени все приложение загрузилось, то вашего кода в нем - кот наплакал, не более 10%, а скорее всего и того нет. Откуда у вас может быть столько уверенносити о том, что что-то не освободилось? Может там какая-то ленивая инициализация? Может память освобождаеся только по мере необходимости: т.е. когда есть чем заменить, а не когда не используется (вызывать мусорщик по чем зря - тоже плохо).
У вас до сих пор нет установленного и задокументированного бага. Вам в первую очередь его нужно найти, а потом исправлять. Вы пытаетесь исправить то не знаю что.

Если ваше приложение, по вашему подозрению, не освобождает ресурс при повторении какого-то действия - на каком-нибудь доступном языке напишите автокликер и запустите его, чтобы он воспроизводил действия пользователя, вернитесь через час и посмотрите на граф - возможно что-то прояснится. А так вы же поймите, с большой долей вероятности, если утечка и существует, то она не в вашем, а во фреймворковском коде (или, если точнее, в некорректом его использовании), т.как фреймвокского кода элементарно гораздо больше.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от KokoZzz Посмотреть сообщение
2 all
на счет функций, которые держат объект (профайлер говорит что таких функций аж 10 штук, если я верно понимаю).
По-умолчанию профайлер показывает первые 10 путей, если нажать на кнопку filters можно выбрать большее количество. Те пути, что на скриншоте ничего не держат, они сами доступны для GC, о чем как бы намекает надпись YES в столбце GC Root.
__________________
משיח לא בא
משיח גם לא מטלפן

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Ха! А я думал, что GC Root имеет привязанный к (некоторому root) объект. То есть в точности до наоборот.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Да, что-то я гоню
Цитата:
You can also examine paths to instances of an object to determine if a path has a back-reference to the garbage collector (GC Root). An instance that was expected to be released, but has references to GC Root, indicates a memory leak. In these cases, modify your application code so references to GC Root are removed. An instance that has no references to GC Root is ready for garbage collection. Flash Player eventually frees this memory.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 16.01.2013, 02:45
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 29  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
А заказчик-то что говорит ?
Тестирование было "живое" ?
Граф-то использования памяти действительно обычный, даже очень неплохой
31 мегабайт Где ж тут учечка ?

Старый 16.01.2013, 13:42
KokoZzz вне форума Посмотреть профиль Отправить личное сообщение для KokoZzz Найти все сообщения от KokoZzz
  № 30  
Ответить с цитированием
KokoZzz

Регистрация: Jan 2013
Сообщений: 18
2 all
вчера провел нагрузочное, как предложил wvxvw. сделал автоматические переходы каждые 3 секунды и наблюдал за памятью. спустя ~200секунд было дополнительно израсходовано 60мб, после чего профайлер отвалился, а флеш не компилировал проект, выплевывая java heap space.
я попробую воспользоваться скаутом, пока не знаю к чему приведет.

2 djyamato
до того, как я занялся утечкой, памяти текло гораздо больше и, конечно, заказчик ругался на зависание браузера. новую версию пока заказчик не видел.

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

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

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


 


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


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