PlayStation Mobile SDKのチュートリアルでガベージコレクションを学ぶ

ガベージコレクションを行って、不要になったインスタンスを解放する。
具体的にはchildren.RemoveAll(true)でchildrenをすべて消す。

では、どうやってchildren.RemoveAll(true)に結びつけるか?

昨日はアクターモデルについて勉強した
アクター=役者は死ぬ…ということで、死亡フラグを使う。
死亡フラグが立っていたらchildren.RemoveAll(true)を実行する。

アクターはツリー構造で登録するので、自分の死亡フラグが立っていたら、すべての子供の死亡フラグも立てるようにする。
そしてツリーの末端からchildren.RemoveAll(true)を実行し、最終的に自分を構成するすべてのアクターが削除する。

一方で、アンマネージドリソース(C#のnewで確保したメモリ以外のリソース)はDisposeメソッドを使ってリソースを解放する。

メモリに制限があるデバイスではインスタンスやリソースの開放は必要になる。
2013/05/22 00:07
タグ