Home > Progression > Progression、メモリリークについての個人的メモ

Progression、メモリリークについての個人的メモ

ここ最近、はまった事とかを忘れないようにメモシリーズ第二弾。

何かと噂のFlashのステキフレームフレームワーク「Progression」ですが、
何度か使って便利さを実感しつつも、
幾つかどうしようもない状況を引き起こしているので、
忘れないようにメモ。

Progressionを使用し、外部SWFをload、unloadする際、
読み込んだ各コンテンツシーン(外部SWF)がunloadされず、
メモリに残り続けるという現象。
今回は外部SWFがメガコンテンツだっただけに、あっと言う間にカックカク。
いろいろ試してみるも効果なし。

開発者のniumさんも言っているように、現状メモリ関連は対応していないらしい…。
LoadChildした外部swfを完全にUnloadするには
CastSprite内でCastImageLoaderを使用するとメモリが解放されない?

一つ目のスレッドの最後にもあるように、
個人的にいろいろ試した結果、原因は、外部SWFにドキュメントクラスやその他のクラス全てにおいて、Progressionの標準クラス(Castとか)を使用すると、unloadされない。
ということ。

テストはFlash標準のデバッグモード+SWFProfilerで確認。
外部SWFとして、以下2つのファイルを用意。
A.swf→ドキュメントクラスにCastMovieClipでクラスを設定。基本項目以外は設定なし。
B.swf→ドキュメントクラスにMovieClipでクラスを設定。基本項目以外は設定なし。
※ファイルを重くするため、テキストを大量にアウトライン化して配置。

indexSceneからそれぞれ読み込むテストを行うと、
A.swfはunload、メモリ解放が全くされない。
B.swfは問題なくunload、メモリも解放された。

試しに、B.swf内にCastSpriteで丸だけのクリップを作成し配置した。
結果、B.swfはunloadされず、メモリも解放されなくなった。
なお、indexSceneを参照する事は可能だった。

あまり検索してもこの手の話はヒットしなかったのですが、
う~ん、これはオレだけなのか・・・?

さらに、困った現象は、
B.swf(CastSpriteなどは削除した初期ファイル)でTweenerを使用する際、
CurveModifiersとDisplayShortcutsの初期化(init())すると、
unloadされず、メモリも解放されなくなる・・・というもの。

まだ勉強不足な所が多々あるので、
きっと何かを間違えているに違いとは思いますが、
なかなか奥が深いProgreesionだなっと。

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://astronika.com/blog/2009/05/18-144827.php/trackback
Listed below are links to weblogs that reference
Progression、メモリリークについての個人的メモ from Astronika blog
pingback from Progressionでガベージコレクションされないのをどうにかしようとした記録 | 2BLOG 09-08-07 (金) 22:13

[...] 参考 CastSprite内でCastImageLoaderを使用するとメモリが解放されない? LoadChildした外部swfを完全にUnloadするには(そういえば質問していたなぁ。) Astronika blog – Progression、メモリリークについての個人的メモ [...]

Home > Progression > Progression、メモリリークについての個人的メモ

RSS Feed
FICC FREELANCE NETWORK
Blogパーツ

Return to page top