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

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

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

Регистрация: Oct 2007
Сообщений: 78
Cool про освобождение памяти -System.gc()

Всем привет!
Столкнулся с проблемой, что флэшка в браузере постоянно растет в размере.
Вероятно это из за того что долгое время не срабатывает gc.
Читал тут что можно вызвать принудительно gc с помощью localConnection
.
Хотя увидел в документации что типа есть такой метод System.gc().
Но из за этого:
Цитата:
For the Flash Player debugger version and AIR applications only
этот метод получается нет смысла запускать врелизной флэшке в браузере....
Как быть сейчас с этим? Есть ли еще какие методы очистки, или только через localConnection?
Заранее спасибо

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Через ЛК тоже не поможет, если ГК не может удалить объект. Эту проблему нужно искать и решать по-другому. Попробуйте во Флексе запустить профайлер и посмотреть, что не удаляется из памяти.
__________________
Hell is the possibility of sanity

Старый 08.12.2008, 13:58
kia007 вне форума Посмотреть профиль Отправить личное сообщение для kia007 Найти все сообщения от kia007
  № 3  
Ответить с цитированием
kia007

Регистрация: Oct 2007
Сообщений: 78
наверное щас отправят гуглить как запускать профайлер...
я работаю во flashDevelop+flex_sdk и плюс делаю копноненты swc в cs3.
Как его запустить то?где чего нажимать?)

причем здесь на форуме сейчас успел прочитать что System.gc() в 10 плеере работает....так ли это?

Старый 08.12.2008, 14:18
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от kia007 Посмотреть сообщение
причем здесь на форуме сейчас успел прочитать что System.gc() в 10 плеере работает....так ли это?
не так
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 08.12.2008, 14:21
kia007 вне форума Посмотреть профиль Отправить личное сообщение для kia007 Найти все сообщения от kia007
  № 5  
Ответить с цитированием
kia007

Регистрация: Oct 2007
Сообщений: 78
тогда как чистить память?
во флэш постоянно очень активно создаются временные локальные переменные, которые потом должны по идее удаляться, ну покажет мне профайлер что типа такая то переменная не удалена, и что с этой информацией делать?

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

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

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

блогер
Регистрация: Jul 2007
Адрес: Russia
Сообщений: 292
Записей в блоге: 5
В области функции все локальные удаляются. Проследи за своими объектами, корректно ли ты их удаляешь.
__________________
Оптимизация производительности на уровне кода

Старый 08.12.2008, 14:34
kia007 вне форума Посмотреть профиль Отправить личное сообщение для kia007 Найти все сообщения от kia007
  № 8  
Ответить с цитированием
kia007

Регистрация: Oct 2007
Сообщений: 78
ок, спасибо!

Старый 08.12.2008, 15:03
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 9  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Вообще работа мифического GC покрыта туманом. Вот простенький тест:
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.system.System;
	import flash.utils.Timer;
	import ru.inils.utils.Debugger;
 
	public class Main extends Sprite 
	{
		private var arr:Array = new Array();
		private var timer:Timer;
		private var s:Sprite;
 
		public function Main():void 
		{
			Debugger.trace(System.totalMemory / 1048576);
			for (var i:uint = 0; i < 700000; i ++) {
				s = new Sprite();
				arr.push(s);
			}
 
			Debugger.trace(System.totalMemory / 1048576);
			for (var j:Number = 0; j < arr.length; j ++ ) {
				arr[j] = null;
			}
 
			Debugger.trace(System.totalMemory / 1048576);
 
			timer = new Timer(5000);
			timer.addEventListener(TimerEvent.TIMER, test);
			timer.start();
		}
 
		private function test(e:TimerEvent):void {
			Debugger.trace(System.totalMemory / 1048576);
			//System.gc();
		}
	}
}
Если раскомментить последнюю строку - то все ок - память очищается. Если же нет (как и есть в релизном плеере), то фиг память очищается - у меня заняло 356 МБ и продолжает расти потихоньку (тоже непонятно почему). Вот уже 10 мин плеер работает - память не очищается...

Добавлено через 27 минут
Прошло 32 минуты. Память 357.4375 МБ. Не очистилась. Неужели по мнению GC 357 МБ - это незначительный объем, раз он не срабатывает?

Старый 08.12.2008, 15:47
kia007 вне форума Посмотреть профиль Отправить личное сообщение для kia007 Найти все сообщения от kia007
  № 10  
Ответить с цитированием
kia007

Регистрация: Oct 2007
Сообщений: 78
жесть)

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

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

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


 


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


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