エントリーの続きです。どんなものなのか調べてみます。APIドキュメントには次のように記されてます。弱参照オブジェクトです。弱参照オブジェクトは、その弱参照オブジェクトのリファレントがファイナライズ可能になり、ファイナライズされ、そして再生されることを阻止することはありません。弱参照は、ほとんどの場合で正規化マッピングを実装するために使用されます。ある時点で、オブジェクトが弱到達可能であると、ガベージ・コレクタが判断したとします。その時点で、ガベージ・コレクタは、そのオブジェクトへの弱参照すべてと、強参照およびソフト参照のチェーンを経由してそのオブジェクトに到達できるような、ほかの弱到達可能なオブジェクトへの弱参照すべてを、原子的にクリアします。同時に、ガベージ・コレクタは以前に弱到達可能なオブジェクトがすべてファイナライズ可能であることを宣言します。同時にまたはあとで、ガベージ・コレクタは、参照キューに登録されているそれらの新しくクリアされた弱参照をキューに入れます。働くときに無条件で参照を解放されるってことかな。ように参照の使用頻度やヒープの状況を考慮して参照を解放するのとは大違いですね。クラスにはコンストラクタが二つあります。referent)指定されたオブジェクトを参照する、新しい弱参照を作成します。新しい参照は、どのキューにも登録されません。q)指定されたオブジェクトを参照し、指定されたキューに登録されている新しい弱参照を作成します。参照が登録されるキュー。登録が必要ない場合はnullメソッドは無いですね。それではプログラムを組んで試してみます。前回組んだプログラムと同じように無駄にメモリーを消費するインスタンスを1000個作っているだけです。メソッドを実装しました。それによって何かするわけでなく呼ばれたことを確認するためだけです。---");}}}プログラムの実行結果は次のようになりました。プログラムの処理時間も15秒と非常に短い時間です。累積時間もぜんぜん違います。プロファイラで確認してみます。タイムも雲泥の差がある。使いたくないと思ってしまう。スローする前にクリアされていることが保証されている。メモリの容量に応じてスケールするキャッシュ用って感じかな。弱参照オブジェクトが弱到達可能になったらガベージ・コレクタでクリアしたい時に使う(キャッシュしない)。ドキュメントの文章が難しく書かれているのであまり自信はないけどこのような違いがあるようだ。プログラムの実行結果からもその様子が少しは解ります。違いはプログラムの出力結果のガベージ・コレクタの動作ではっきりと解ります。スローしないところまで回収されないようです。0なかなか面白い仕組みになっていますね。強参照しか普段使わない私にとって新鮮な気分です。