GCが起きたタイミングで停止してしまう
- package {
- import flash.display.Sprite;
- import flash.utils.Timer;
- import flash.system.System;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.events.Event;
- import flash.events.TimerEvent;
- public class TestingWeakRef extends Sprite {
- private var my_txt:TextField = new TextField();
- /*
- 疑問
- こんなふうにリスナーが消えてしまった場合、
- removeListenerした場合とどう違うのか?
- 内部にリスナーの登録自体はのこるのか、
- */
- public function TestingWeakRef() {
- var myTimer:Timer = new Timer(1);
- var listener:Function = function():void {
- my_txt.text =
- String(new Date().time) + ": " +
- String(System.totalMemory);
- }
- addEventListener(Event.ENTER_FRAME, listener, false, 0, true); // 弱い参照を指定
- my_txt.wordWrap = true;
- my_txt.autoSize = TextFieldAutoSize.LEFT;
- addChild(my_txt);
- myTimer.addEventListener(TimerEvent.TIMER, xTest);
- myTimer.start();
- }
- private function xTest(eventObject:Event):void {
- new TextField();
- //trace('timer');
- }
- }
- }
Testing weak reference forked from: Testing weak reference プライベート関数:GCされない
- // forked from Fumio's Testing weak reference
- package {
- import flash.display.Sprite;
- import flash.utils.Timer;
- import flash.system.System;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.events.Event;
- import flash.events.TimerEvent;
- public class TestingWeakRef extends Sprite {
- private var my_txt:TextField = new TextField();
- public function TestingWeakRef() {
- var myTimer:Timer = new Timer(1);
- addEventListener(Event.ENTER_FRAME, test,
- false, 0, true); // 弱い参照を指定
- my_txt.wordWrap = true;
- my_txt.autoSize = TextFieldAutoSize.LEFT;
- addChild(my_txt);
- myTimer.addEventListener(TimerEvent.TIMER, xTest);
- myTimer.start();
- }
- private function test(e:Event):void{
- my_txt.text =
- String(new Date().time) + ": " +
- String(System.totalMemory);
- }
- private function xTest(eventObject:Event):void {
- new TextField();
- }
- }
- }
Testing weak reference forked from: Testing weak reference
- // forked from Fumio's Testing weak reference
- package {
- import flash.display.Sprite;
- import flash.utils.Timer;
- import flash.system.System;
- import flash.text.TextField;
- import flash.events.Event;
- import flash.events.TimerEvent;
- public class FlashTest extends Sprite {
- public function FlashTest() {
- var myTimer:Timer = new Timer(1);
- addEventListener(Event.ENTER_FRAME,
- function (eventObject:Event):void {
- trace(System.totalMemory);
- }, false, 0, true); // 弱い参照を指定
- myTimer.addEventListener(TimerEvent.TIMER, xTest);
- myTimer.start();
- }
- private function xTest(eventObject:Event):void {
- new TextField();
- }
- }
- }
notice:

