参照カウント
弱い参照とは、参照カウントを増加させない参照である。例えばC++ではboost::weak_ptrあるいはstd::weak_ptrなどが該当する。
一方、マーク・アンド・スイープやコピーGCによるガベージコレクションでは、循環参照によるメモリリークの問題は発生しない。
なお、Javaや.NET Frameworkでは、いずれも参照カウントベースではないガベージコレクション方式を採用しており、循環参照によるメモリリークは発生しない。例えば以下のJavaコードは合法であり、循環参照していたとしてもガベージコレクションの回収対象となる。
ただし、非意図的オブジェクト保持(unintentional object retention)が引き起こすメモリリークを回避するために、通常の参照(強参照)の代わりにjava.lang.ref.WeakReferenceのような弱参照クラスのインスタンスを使うこともある。