トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     loadMovieでメモリ浪費?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
minor
Åê¹ÆNo.3657
投稿日時: 2004-2-10 14:28
新米
居住地: 大阪
投稿: 19
使用環境:
2kPro or XP & IE6
2004Pro or MX
loadMovieでメモリ浪費?
こんにちは、はじめまして。minorです。
以後お見知りおきを・・・

で、早速本題なんですが、まず最初に守秘義務の関係で詳しい説明、サンプル等の提供が難しいので、中途半端な質問になってしまうかと思いますが、気がつく範囲で結構ですので皆さんの知恵を貸してください

まず、XMLsocketでサーバーと接続状態にあり、setIntervalを使って3秒間隔で定期的にメッセージのやり取りをしているムービーがあります。
このムービーをブラウザ(IE6)で連続稼動していてもメモリの浪費は見られません。しかし、同じムービー内にMCをひとつ用意し、それに対して、空のswfを連続(0.5秒間隔ぐらい)でloadMovieをし続けるロジックを加えると、だんだんブラウザのメモリ使用量が増えていくのです。

通信を行う処理(メソッド)はクラス化し、グローバルオブジェクトとして宣言しています。

loadMovieが直接的な原因ではない気がしますが、loadMovieがきっかけでメモリの浪費につながっていることは確かだと思うのです・・・
loadMovieが他のオブジェクトや処理に何らかの影響を及ぼす可能性があれば教えていただきたいです。

最初に書いたとおり、中途半端な質問で申し訳ありませんが、よろしくお願いします。

FlashMX & IE6 & WIN2K & Player7
ゲスト
Åê¹ÆNo.3658
投稿日時: 2004-2-10 14:59
Re: loadMovieでメモリ浪費?
どうもこんにちわ

引用:

しかし、同じムービー内にMCをひとつ用意し、それに対して、空のswfを連続(0.5秒間隔ぐらい)でloadMovieをし続けるロジックを加えると、だんだんブラウザのメモリ使用量が増えていくのです。

私もプロジェクターで似たような経験があります。
外部のムービークリップをloadMovieにて入れ替えて処理してゆくようにしていたのですが、長時間使っているとフリーズするトラブルがありました。メモリの使用量をモニターすると、loadMovieのタイミングで使用量が増加し、それが累積してフリーズしていました。

当方は必要な外部ムービーをloadMovieで最初にすべて読み込んで、それらを使い廻すことで解決させました。時間が無かったためremoveMovieClipをかませるとどうなるかなどは試しませんでした。

解決策ではありませんが、同じような事例があったとの情報提供まで。

minor
Åê¹ÆNo.3659
投稿日時: 2004-2-10 15:46
新米
居住地: 大阪
投稿: 19
使用環境:
2kPro or XP & IE6
2004Pro or MX
Re: loadMovieでメモリ浪費?
Keitaさん、早速の返信ありがとうございます。
引用:
外部のムービークリップをloadMovieにて入れ替えて処理してゆくようにしていたのですが、長時間使っているとフリーズするトラブルがありました。メモリの使用量をモニターすると、loadMovieのタイミングで使用量が増加し、それが累積してフリーズしていました。

そうですか、やっぱりloadMovieが怪しいんですかね・・・
サーバにあげるので、最初に全てダウンロードは少し厳しいですね^^;

あと、追記です。

loadMovieの前にunloadMovieをする方法は試しましたが無駄でした。
宇都宮正宗
Åê¹ÆNo.3663
投稿日時: 2004-2-10 16:37
新米
居住地:
投稿: 25
使用環境:
:Flash:5
6.0
2004
:Flash:8
:Flash:CS3
:Flash:CS4
:Flash:CS5
:Flash:CS6
:FlashCC
:FlashBuilder
:FlashDevelop
pro
:Win:Vista
:Win:7
:MacOS:X
Re: loadMovieでメモリ浪費?
こんにちは。

下記の状態な感じでテストしてみましたが消費メモリが増え続けるといった問題は再現できませんでした。

ステージ上に空MC「mc」を配置

_global.XML_class = function() {
	this.socketXML = new XMLSocket();
	this.socketXML.onXML = function(x) {
		trace("送られてきたXML");
		trace(x);
	};
	this.socketXML.onConnect = function(s) {
		this.sendXML = function(x,str) {
			if (str == null) {
				str = "<defaultMessage>あ?あ?マイクチェックマイクチェック</defaultMessage>";
			}
			trace("贈るXML");
			trace(str);
			x.send(str);
		};
		if (s) {
			trace("コネクトしました");
			setInterval(this.sendXML, 3000, this);
		} else {
			trace("いやー失敗失敗");
		}
	};
	this.startInterval = function() {
		this.socketXML.connect("localhost", 1192);
	};
};
myXMLClass = new XML_class();
myXMLClass.startInterval();
function lm() {
	_root.mc.removeMovieClip();//無くてもOK
	_root.mc.loadMovie("test.swf");
}
setInterval(lm, 500);


もちろんこれだとクラス化してる意味もあんま無いんで(とゆうか苦しい)、minorさんはもっと複雑な処理をしてるとは思うのですが、とりあえずloadMovieとメモリ使用量が増え続ける因果関係は見つかりませんでした。
とゆうか無理にでもメモリ増やす処理を考えてみたりもしたんですがそれでもダメでした。

さすがにこんなこと

function tFuyasu() {
	this.lm = function() {
		_root.mc.unloadMovie();
		_root.mc.loadMovie("test.swf");
	};
}
function muriyari() {
	i += 4294967295;
	_root["fuyasu_" + i] = new tFuyasu();
	_root["fuyasu_" + i].lm();
}
setInterval(muriyari, 500);

すると別の意味でジャンジャン増えていきますが

とりあえず単純にひとつのMCに空のswfをloadMovieするという場合に限りメモリが増え続けるというようなことはあんまり無いと思うのですが、再現性のあるサンプルコードが守秘義務に引っかかるくらい複雑な処理をしてて提出できないのであれば、loadMovieでメモリが増えてるというより問題はそこらへんにあるような気がしないでもないです。
minor
Åê¹ÆNo.3675
投稿日時: 2004-2-10 18:41
新米
居住地: 大阪
投稿: 19
使用環境:
2kPro or XP & IE6
2004Pro or MX
Re: loadMovieでメモリ浪費?
masamuneさん、返信ありがとうございます。

引用:
下記の状態な感じでテストしてみましたが消費メモリが増え続けるといった問題は再現できませんでした。


無理やり増やした方法はおいておくとして
検証ありがとうございます。
単純にするとmasamuneさんが作られた処理とほぼ同じような感じです。
しかし、再現しないですか・・・loadMovieしないことにはメモリ増加の現象が起きないので、loadMovieだと思うのですが、困ったものです。
クラス化等は関係ないのかもしれませんね。

その後気になったことを発見しました。
function loader() {
	_root.temp.loadMovie("null.swf")
}

setInterval( loader , 100 )

こんな感じで猛スピードで外部swfを読み込むムービーをLANを経由して(要するにサーバー上からと同じ?)ブラウザ上で実行し、しばらくすると徐々にメモリが増加しました。
これが非常に気になります
しかし、このメモリ周りをFlashで追求するのは厳しいですね・・・考えすぎで熱が出そうです

引き続き情報提供お待ちしております。
よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops