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

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

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

Регистрация: Feb 2006
Сообщений: 97
По умолчанию как почистить память?

И снова здравутвуйте!
у меня такой ворос:
при большом объёме вычислений (в смысле создаю огромный массив в памяти, более 100 метров, к примеру)
потом обсчитываю его. Потом он не нужен и можно его удалить. Удаляю. Память не освобождается. Как освободить память?

Также пробовал хранить массив в отдельной СВФке и грузить её в другую, когда не нужен - выгружать.unloadMovie() - результат нулевой!

В поиске тоже был там для себя отметил, что Флэш - это "чёрный ящик" и в нём есть "мусорщик". Правда не понятно, как заставить этого мусорщика убирацца


Последний раз редактировалось Nirth; 19.09.2006 в 13:33.
Старый 19.09.2006, 13:27
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А delete не помогает?

Старый 19.09.2006, 17:20
mrspb вне форума Посмотреть профиль Отправить личное сообщение для mrspb Найти все сообщения от mrspb
  № 3  
Ответить с цитированием
mrspb

Регистрация: Feb 2006
Сообщений: 97
не помогает.
помню: в 6-ом Флэше помогал.
дело происходит так (если убрать всё лишнее):
в свф "c.swf" грузится свф "v.swf"
в "v.swf" на главной сцене зацикленный мувик "s1", в котором в первом кадре:
Код:
//иницализация
if (k == undefined) {
	i0 = 0;
	tOld = getTimer();
	aaa = new Array();
	delay = 800;
	k = 1;
}
//заполнение памяти
for (i=i0; i<1050000; i++) {
	aaa[i] = Math.random();
	if (getTimer()-tOld>delay) {
		break;
	}
}
tOld = getTimer();
trace('i = '+i);
i0 = i;
if (i == 1050000) {
//зачистка
	this.stop();
	delete aaa;
//флажок в другом файле:
	_root.aaa = 0;
	trace('aaa = '+_root.aaa);
	this.removeMovieClip ();
}
s1 аттачится на главную сцену: this.attachMovie ('s1', 's1_mc', 4);
*
v.swf грузится в c.swf:
Код:
this.createEmptyMovieClip ('cont',1);
aaa  = 1;
this.createEmptyMovieClip ('t',2);
this.cont.loadMovie('v.swf');
trace (cont);
this.t.onEnterFrame = function () {
	if (aaa == 0){
		_root.cont.unloadMovie();
		_root.cont.loadMovie('cj.swf');
		_root.cont.removeMovieClip();
		trace (cont);
		this.removeMovieClip ();
	}
}
в итоге в c.swf остаётся только переменная "ааа", а память не освобождается.


Последний раз редактировалось mrspb; 19.09.2006 в 17:55.
Старый 20.09.2006, 14:26
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
mrspb, мне непонятен ваш код. Я не знаю, что такое «v», «t», «aaa», «i0», «tOld», «k» и прочие ничего неговорящие названия переменных.

Код:
aaa = [];
for (i=0; i<50000; i++) {
	aaa[i] = Math.random();
}
delete aaa;
delete i;
trace(aaa); // undefined, всё работает

Старый 21.09.2006, 04:31
mrspb вне форума Посмотреть профиль Отправить личное сообщение для mrspb Найти все сообщения от mrspb
  № 5  
Ответить с цитированием
mrspb

Регистрация: Feb 2006
Сообщений: 97
не работает, посмотрите в "Диспетчере задач" на график производительности, точнее на график занимаемой памяти: пока работает for, график растёт. потом замирает на одном уровне (,пока не закроешь флэшку), хотя aaa уже удалён.
Для наглядности лучче взять 950000 итераций. У меня такой масивчик занимает прим 110 метров памяти, а там, где памяти (физической) всего 128 метров или того меньше моя флэшка может устроить нехилые тормоза компу.
http://images.people.overclockers.ru/90424.gif (5кб)

Старый 21.09.2006, 13:47
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну да, не удаляет…
А зачем такие итерации, если они всё-равно не выполнятся за раз?

Старый 22.09.2006, 03:38
mrspb вне форума Посмотреть профиль Отправить личное сообщение для mrspb Найти все сообщения от mrspb
  № 7  
Ответить с цитированием
mrspb

Регистрация: Feb 2006
Сообщений: 97
итерации в таких количествах - это к примеру.
если они всё-равно не выполнятся за раз?
в каком смысле не выполнятся? аборт скрипта, чтоли? ну в моём коде выше это предусмотрено
Тем не менее, вопрос остаётся открытым...

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

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
ЭЭЭ .... а так ? =)

Код:
_root.createEmptyMovieClip("kod", 1);
with (kod) {
	aaa = [];
	for (i=0; i<50000; i++) {
		aaa[i] = Math.random();
	}
}
kod.unloadMovie();
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники

Старый 09.10.2006, 06:08
mrspb вне форума Посмотреть профиль Отправить личное сообщение для mrspb Найти все сообщения от mrspb
  № 9  
Ответить с цитированием
mrspb

Регистрация: Feb 2006
Сообщений: 97
хорошая шутка :lol:
у меня Флэш повис, когда я лист вариэйбл сделал при миллионном массиве
анлоадМови () не прокатил ))

Старый 10.10.2006, 12:55
_sestra_ вне форума Посмотреть профиль Отправить личное сообщение для _sestra_ Найти все сообщения от _sestra_
  № 10  
Ответить с цитированием
_sestra_
 
Аватар для _sestra_

Регистрация: Dec 2005
Сообщений: 219
Отправить сообщение для _sestra_ с помощью ICQ Отправить сообщение для _sestra_ с помощью Skype™
Я так понимаю Ф.плауер имеет внутренний самокотроль очистки памяти. В этом тесте видно, если запустить свф и смотреть на показатель памяти, как в момент отчистки массива память сначала остаёться той же( иногда растёт, иногда падает чуть-чуть), а затем возвращаеться в начальное положение примерно 4-9 MB, потом растёт до 20-30 MB и так далее...
Вложения
Тип файла: rar memory.rar (4.4 Кб, 68 просмотров)
__________________
Счастье - это хорошее здоровье и плохая память

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

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

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


 


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


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