Skip to main content

弱い参照とは何ですか?

bewed弱い参照とは、オブジェクトとの関連により、オブジェクトがガベージコレクションルーチンによってクリーンアップされないようにすることを妨げないメモリ内のオブジェクトへの参照です。このタイプの参照は、通常のゴミ収集が発生しないように特別な条件が存在する場合にメモリリークを排除するのに役立つために一般的に使用されます。循環参照を使用するプログラミングアルゴリズムまたはキャッシュまたは特別な構造の利益に無関係な情報を保持して、弱い参照を使用して利益をもたらします。これらのタイプの状況での弱い参照の利用により、未使用の指示物オブジェクトとそれに関連する弱い参照のクリーンアップが可能になります。オブジェクトは、強力な参照が実行可能なままである限り、割り当てられたままです。強力な参照は無効になり、その関連するオブジェクトメモリは、強力な参照の直後に解放され、そのオブジェクトはプログラムで使用されなくなったとフラグが付けられます。ソケットプログラミングや画像操作アプリケーションなどの特定の状況では、作業オブジェクトを作成するために使用されるクラスには、特定のアプリケーションが必要とする追加情報を保存するための組み込み能力がありません。接続や写真などの一時的なオブジェクトの追加の詳細は、補足キャッシュオブジェクトに保存し、参照によって過渡オブジェクトにリンクする必要があります。強力な参照の代わりに弱い参照を使用する場合、追加の情報は参照に拘束されず、指示対象オブジェクトが実行不可能としてマークされた場合、ガベージコレクターによってキャッシュから削除される場合があります。Java、Python、Perl、C#、および.NETフレームワークなどのガベージコレクションサブシステムによって増強される言語で利用できます。ただし、C ++では、プログラマーは通常、メモリのクリーンアップを保証する責任があります。この言語は、弱い参照とゴミコレクションが提供する同じ機能のいくつかを提供するスマートポインタークラスを実装しており、不適切なポインターのクリーンアップによって引き起こされるメモリリークを減らすのに役立ちます。強い参照または弱い参照以外の参照のより細かい勾配を提供することにより、言語の機能を強化します。ソフト参照やファントム参照などのデータ型は、これらの言語に含まれる場合があります。これにより、さまざまなレベルのオブジェクトの再捕獲または取引通知が可能になります。自動化されたガベージコレクションで言語を使用するプログラマーは、アプリケーションのパフォーマンスを改善するために利用可能なすべての参照クラスに慣れる必要があります。