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 {
}
}