トップページ⇒tech
8コメント2KB

ガーベージコレクション

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
って COMの
「参照で+1 非参照で−1 カウンタがゼロに戻ったら開放」
もガーベージコレクションなのかな?
Ruby本とか読むと、その手の言語のガーベージコレクションと微妙に違う気がする
0002名無しさん@お腹いっぱい。NGNG
Perlはそれと同じ仕組みらしいです。
0003名無しさん@お腹いっぱい。NGNG
Javaではもうちょっといろいろやってるらしいです。
よく知らんけど。
00042NGNG
Perl、COMのは
リファレンスカウンタと呼ばれる手法らしい。
これには欠点があって、AがAを参照すると解放出来なくなる。
0005名無しさん@お腹いっぱい。NGNG
参照カウンタのことはMORE EFFECTIVE C++に載ってるよ。
0006名無しさん@お腹いっぱい。NGNG
ま〜くすい〜ぷあげ。
0007名無しさん@お腹いっぱい。NGNG
参照カウンタは循環参照の問題があるので、他の方法と組み合わせる
こともあるみたいです。
0008名無しさん@お腹いっぱい。NGNG
GC は「ゴミ集め」ですから、誰も参照していない COM オブジェクトが
自動的に解放される現象を GC と呼んでも問題ないでしょう。

しかし、「参照カウント」方式は GC の実現方法の一つであって
技法的にはほかにもあります。「参照カウント」は GC の技法の
中でも一番簡単な方法。

既にコメントがありますが、いってみれば「性善説」に基づいた
方法なので、変なことが起きると解放できなくなることがあります。

なお、COM の場合は循環参照に対するお手当はありません。
大体、参照カウンタの増減自身もアプリケーション側(実際には
MFC/ATL が処理してくれるけど)が実装しなければなりませんし。

■ このスレッドは過去ログ倉庫に格納されています