PlayStation Mobile SDKのチュートリアルでガベージコレクションを学ぶ
ガベージコレクションを行って、不要になったインスタンスを解放する。
具体的にはchildren.RemoveAll(true)でchildrenをすべて消す。
では、どうやってchildren.RemoveAll(true)に結びつけるか?
昨日は
アクターモデルについて勉強した。
アクター=役者は死ぬ…ということで、死亡フラグを使う。
死亡フラグが立っていたらchildren.RemoveAll(true)を実行する。
アクターはツリー構造で登録するので、自分の死亡フラグが立っていたら、すべての子供の死亡フラグも立てるようにする。
そしてツリーの末端からchildren.RemoveAll(true)を実行し、最終的に自分を構成するすべてのアクターが削除する。
一方で、アンマネージドリソース(C#のnewで確保したメモリ以外のリソース)はDisposeメソッドを使ってリソースを解放する。
メモリに制限があるデバイスではインスタンスやリソースの開放は必要になる。
2013/05/22 00:07