Hatena::ブログ(Diary)

hedgehog’s blog このページをアンテナに追加 RSSフィード

2009-11-18 ガベージコレクションを意識してみる

[]ガベージコレクションを意識してみる

AS3.0ではこれまで以上にメモリマネージメントについて注意を払う必要があるそうです。そんなわけでMoock先生のEssential ActionScript 3.0のChapter 14: Garbage Collectionを読んでみました。例によってよく理解できないこともあるのですが、理解できたことだけメモ。

【ガベージコレクションの仕組み】

  1. Flashが実行されるとある一定量のメモリがOSによって自動的に割当てられる
  2. オブジェクトが生成される度にメモリ容量が蓄積されていく
  3. メモリの蓄積が一定量を超えると、ガベージコレクションが実行される周期が決定される
  4. 3の周期でガベージコレクションが実行され、メモリ内の不要なオブジェクトを削除する

【ガベージコレクションの対象】

  • プログラム内で参照されていないオブジェクト。
  • 生成したオブジェクトを手動で削除することはできないが、参照値にnullを代入してやることによってガベージコレクションの対象とすることができる

【その他学んだこと】
ガベージコレクションの対象となっているオブジェクトも、ガベージコレクションが実行されるまでは存在し続ける。そのため、以下のような処理に留意

  1. イベントリスナーの登録解除
  2. timerやintervalの停止
  3. MovieClipの再生停止
  4. 上記の処理を外部から実行できるpublicメソッドを実装*1

こんな感じです。間違って理解している可能性も大いにあり得るので、興味がある方はMoockさんの本を実際に読んでみることをお奨めいたします。

*1:Interfaceの章を読んでたら、ネーミング慣例としてIKillableというのが挙ってました。これはつまりイベントリスナーの解除やタイマーの停止のためのpublicメソッドを実装し忘れないためのInterfaceかと思われます。頭いい!僕はIDisposableインターフェースにdiposeというメソッドを登録して使ってみようと思います。Moock先生にリスペクト。サイン貰いに行きます。

Profile

iDrop

「もう無理」と愚痴をこぼしながらも、なんとかFlashを勉強しています。

Calendar
<< 2009/11 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Comment