スキップしてメイン コンテンツに移動

投稿

ラベル(Garbage Collection)が付いた投稿を表示しています

ActionScript 3.0 Garbage Collectionのテスト

Duke Software: ActionScript 3.0 でのSoundのメモリリーク解消方法 の投稿にブックマークをして下さっている方がいるのに、自分で何もテストしないのはお恥ずかしいので、Flashのメモリ管理、特にガーベッジコレクションについてその挙動を調べてみました! 結論から書きますと、 Array を使うのが最も安全なようです。(あくまで私がテストした環境においてです。保証はできません。)System.gc();を明示的に呼び出せば、下記でテストしたすべての場合でメモリが開放されますが、System.gc();はデバッグ版のFlash Playerでしか呼びさせなかったはずなので、止めておいた方が無難だと思います。 テスト環境 Flex :Flex 3.5 (build 12683) Flash Player:WIN 10,0,42,34 (Capabilities.versionから取得) 方法: 1) クラスにフィールド(1. Array, 2. Object, 3. 自作のdynamicクラス)を定義 2) 画面をクリックするごとに、Vector. オブジェクトを生成して1)で定義したフィールドに代入 3) クリック直後とクリックイベント検知1秒後のメモリ使用量をSystem.totalMemoryで取得 1. Array - すぐに開放される package test { /** * The most safe way... * * @author Duke */ public class GarbageCollectorArrayPropertyTest extends GarbageCollectorTestBase { private var a:Array = new Array(1); public function GarbageCollectorArrayPropertyTest() { } protected override function createObject():void { // Yeah garbage collection is triggerd and works properly :) a[0] = new