Garbage Collection Hack 「ガベージコレクションを働かせる裏技」 http://f-site.org/articles/2011/07/31220748.html Fumio forked:0favorite:1lines:60license : MIT License modified : 2011-07-31 23:25:44 Embed Tweet package { import flash.display.Sprite; import flash.utils.getTimer; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.text.TextFormatAlign; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.net.LocalConnection; import flash.system.System; import flash.utils.Timer; [SWF(width = "240",height = "180")] public class GarbageCollectionHack extends Sprite { private var my_txt:TextField = new TextField(); private var my_fmt:TextFormat = new TextFormat(); private var nCount:uint = 0; private var myTimer:Timer = new Timer(500, 1); public function GarbageCollectionHack() { createTextField(); var mySprite:Sprite = new Sprite(); stage.addEventListener(MouseEvent.CLICK, xStop); mySprite.addEventListener(Event.ENTER_FRAME, test); // , false, 0, true); mySprite = null; myTimer.addEventListener(TimerEvent.TIMER, xGetMemory); } private function test(eventObject:Event):void { xTrace(nCount++); } private function xStop(eventObject:MouseEvent):void { gcHack(); myTimer.start(); } private function gcHack():void { // System.gc(); try { new LocalConnection().connect('test'); new LocalConnection().connect('test'); } catch (errorObject:Error) {} } private function createTextField():void { addChild(my_txt); my_fmt.align = TextFormatAlign.LEFT; my_txt.defaultTextFormat = my_fmt; my_txt.autoSize = TextFieldAutoSize.LEFT; } private function xTrace(n:int):void { var _str:String = "loop: " + String(n); _str += "\nmemory: " + String(System.totalMemory); _str += "\nclick on the stage to garbage-collect!" my_txt.text = _str; } private function xGetMemory(eventObject:TimerEvent):void { var _str:String = "\nmemory is reduced to: "; _str += String(System.totalMemory); my_txt.appendText(_str); myTimer.removeEventListener(TimerEvent.TIMER, xGetMemory); } } } Code Fullscreen Preview Fullscreen syano LocalConnection System.totalMemory connect test TimerEvent.TIMER TextFormatAlign.LEFT TimerEvent.ENTER_FRAME Error TimerEvent Timer start removeEventListener String addEventListener text addChild uint Sprite int