Entries

AS3でガベージコレクションを見張る画期的方法メモ

AS3のメモリリークはファックだぜぇ!!と嘆いている全国35人(含む自分)ぐらいのみなさまコンニチハ。

現行案件でメモリリーク地獄にまきこまれて、どうにかこうにか解決策を考えてたら、以下のようなことに気がついた。

弱参照のDictionaryのオブジェクトキーを利用して、対象のオブジェクトがガベッジコレクションされたかどうかを見張ることができるんじゃね??

つまりTimerでDictionaryを見張ってキーが消滅した瞬間が、そのままそのキーとして使われていたオブジェクトがガベッジコレクションされたタイミングなわけです。グローバルな弱参照Dictionaryを作ってその挙動を見張れば、onGarbageCollection イベントを発行できるし、DictionaryのキーをダンプすればGCされそこねたオブジェクトの一覧が取得できるんじゃないかと。

うん、なんだか結構画期的な概念を唱えてる気がする。
でも自分はすることいっぱいなので、検証と実装は他のASジャンキーにまかせるぜ!!