1.参照がサイクルしてる場合(相互に参照している場合)の解放ができない。(致命的な問題)
→解決方法1:何かのタイミングでMark&Sweepなどの相互参照を問題にしないGCアルゴリズムを使用する。
→解決方法2:ゴミ参照(相互参照の場合)を検知する為にヒープ領域を走査する。
2.カウンタ処理が分散されてわずらわしい。
3.カウンタ処理が結構重い。
GCでは処理の早さがかなり重視される。(言語処理系の処理時間を結構左右するため)
カウンタ処理って軽いじゃん。という事でさえ神経質にならなくてはならない。
欠点2に関してはしょうがないが、欠点3についてはWriteBarrier(
用語集)なども有るため
重いのでこのアルゴリズムは避けよう、という事には一概にはならない。