In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: メモリにゴミが残る(問題版)

このクラスを実行すると、最終的に 8.3 MB 程度のメモリを消費します。
※消費量は実行環境によって差異があります。
// forked from nium's メモリにゴミが残る(問題版)
package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.net.LocalConnection;
    import net.hires.debug.Stats;
    
    // このクラスを実行すると、最終的に 8.3 MB 程度のメモリを消費します。
    // ※消費量は実行環境によって差異があります。
    public class MemoryTest extends Sprite {
        
        public function MemoryTest() {
    
            stage.addChild( new Stats() );
            
            // 大量の MyObject インスタンスを作成する
            var tests:Array = [];
            
            while ( tests.length < 100000 ) {
                tests.push( new MyObject() );
            }
            
            // stage クリックで参照を破棄する
            stage.addEventListener( MouseEvent.CLICK, function( e:MouseEvent ):void {
                tests = [];
                try {
                    // 強制的に GC を発動する
                    new LocalConnection().connect( "foo" );
                    new LocalConnection().connect( "foo" );
                }
                catch ( e:Error ) {
                }
            }, false, 0, true ); //弱参照テスツ
        }
    }
}

import flash.utils.Dictionary;
class MyObject {
    //Dictionary にしてみたり
    //プロファイラ使うと違いがわかるかも
    public var func:Dictionary;
    public function MyObject() {
        func = new Dictionary(true);
        func[myMethod] = true;
    }
    public function myMethod():void {
    }
}