トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     AS3.0 ガベージコレクションの対象について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
nekoyuki
Åê¹ÆNo.33072
投稿日時: 2007-4-20 13:59
半人前
居住地: 大阪府
投稿: 48
使用環境:
AS3.0 ガベージコレクションの対象について
ちょっと実験してみました。
下記の様なコードです。

//本体?変数mc
var mc:MovieClip = new MovieClip();
//リファレンス?変数adr
var adr:MovieClip = mc;
mc.x = 10;
trace("本体"+mc.x);
trace("リファレンス"+adr.x);
delete mc;
mc = null;
trace("本体を消した後?"+adr.x);
trace("結論として変数mcですらリファレンスではないのか??");


実行結果:
本体10
リファレンス10
本体を消した後?10
結論として変数mcですらリファレンスではないのか??


本体(?)である変数mcにnullを代入したはず
なのですがまだ変数adrで値が参照出来てしまいます。

リファレンスのDisplayObjectContainer.removeChild () メソッドの一文によるとこう記述されています。

ガベージコレクターとは、Flash Player が未使用のメモリースペースを再割り当てする処理のことです。変数またはオブジェクトがアクティブに参照されなくなり、任意の場所に保存されていない場合、ガベージコレクターによってメモリー内が探索され、それらに対する参照が存在しなければメモリースペースを占有している変数またはオブジェクトが一掃されます。

つまりは変数adrにもnullを代入しなければガベージコレクションの対象にされないと言う事でしょうか?
これでは無闇にDisplayObject系のインスタンスの参照をする変数を作ることは出来ないと言う訳で恐ろしくて夜も眠れません
(今まで頻繁にmcの参照を使ってスクリプトを組んでいたので・・・)

removeChildしたインスタンスが
プロパティparentがnullになるだけで
まるごと生存しており、
再び、addChildすると再利用出来てしまいます。
明示的に完全にインスタンスを消すことは不可能なのでしょうか?

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » AS3.0 ガベージコレクションの対象について nekoyuki 2007-4-20 13:59
     Re: AS3.0 ガベージコレクションの対象について Fumio 2007-4-20 14:27
       Re: AS3.0 ガベージコレクションの対象について nekoyuki 2007-4-27 2:40
         Re: AS3.0 ガベージコレクションの対象について Fumio 2007-4-27 3:15
           Re: AS3.0 ガベージコレクションの対象について nekoyuki 2007-4-28 16:24
             Re: AS3.0 ガベージコレクションの対象について nekoyuki 2007-4-30 18:21
               Re: AS3.0 ガベージコレクションの対象について Fumio 2007-5-1 10:56
                 Re: AS3.0 ガベージコレクションの対象について nekoyuki 2007-5-9 1:53
                   Re: AS3.0 ガベージコレクションの対象について nekoyuki 2007-5-9 3:41
                     Re: AS3.0 ガベージコレクションの対象について Fumio 2007-5-31 22:23

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops