P137-157 ガーベジコレクション
ARCとは別に、ガーベジコレクションも用意されている。
- コンパイラはccでもclangでも有効。
- MacOS 10.5 Snow Leopard以降。iOSは対応していない。
- 循環参照があっても問題なくメモリを解放してくれる。
- __weak でゼロ化をする事もできる。
- 循環参照が大丈夫なので、使わなければ行けない事はないが、これで解放しやすくできる(←?)
- 解放時にfinalizeが実行されるので、ここで後処理を行える。が、注意点が多い。
- finalize内で別のインスタンスの解放を考えない。
- オブジェクトの代入に気をつける。レザレクション(←?)が起きて実行時エラーになる場合がある。
- finalizeの実行順序は決まっていない。
- スレッドセーフで。
- 実行時の速度は手動のカウンタ管理方式、ARC、ガーベジコレクションで比較するとARCが最も早い。(コンパイル時に最適化した場合)
ざっと読んだ。ARCではなくガーベジコレクションを使うシチュエーションはどういうときなんだろうか。
- 作者: 荻原剛志
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/12/28
- メディア: 大型本
- 購入: 14人 クリック: 85回
- この商品を含むブログ (13件) を見る