NetBeansあけましておめでとうございます。今年の5月で平成が終わってしまいます。聞いたことはあるけど実際にプログラムを組む上で使った記憶がないのでこれで遊んでみよう。ドキュメントには下記のように記されてます。メモリー要求に応じてガベージ・コレクタの判断でクリアされるソフト参照オブジェクトです。ソフト参照は通常、メモリー・センシティブなキャッシュを実装するために使用されます。ある時点で、オブジェクトがソフト到達可能であると、ガベージ・コレクタが判断したとします。その時点で、ガベージ・コレクタは、そのオブジェクトへのソフト参照すべてと、強参照のチェーンを経由してそのオブジェクトに到達できるような、ソフト到達可能なほかのオブジェクトへのソフト参照すべてを原子的にクリアすることを選択できます。同時にまたはあとで、ガベージ・コレクタは、参照キューに登録されているそれらの新しくクリアされたソフト参照をキューに入れます。ソフト到達可能なオブジェクトへのすべてのソフト参照は、仮想マシンがOutOfMemoryErrorをスローする前にクリアされていることが保証されています。ない場合、ソフト参照がクリアされる時点、またはさまざまなオブジェクトへの一連のソフト参照がクリアされる順序に制約はありません。仮想マシンの実装は、最近作成されたソフト参照または最近使用されたソフト参照をクリアしないことが奨励されます。このクラスの直接のインスタンスは、単純なキャッシュを実装するために使用できます。このクラスまたは派生したサブクラスは、より洗練されたキャッシュを実装するために、もっと大きなデータ構造でも使用できます。ソフト参照のリファレントが強到達可能であるかぎり、つまり実際に使用されているかぎり、ソフト参照はクリアされません。このため、たとえば洗練されたキャッシュは、エントリへの強いリファレントを維持することで、もっとも新しく使用されたエントリが破棄されることを防ぎ、ほかのエントリはガベージ・コレクタの判断で破棄されるようにできます。プログラムが止まってしまうことがない。クラスにはコンストラクタが2種類あります。referent)指定されたオブジェクトを参照する新しいソフト参照を作成します。新しい参照は、どのキューにも登録されません。q)指定されたオブジェクトを参照し、指定されたキューに登録されている新しいソフト参照を作成します。参照が登録されるキュー。登録が必要ない場合はnullメソッドは一つだけあります。get()参照オブジェクトのリファレントを返します。プログラムまたはガベージ・コレクタによって、この参照オブジェクトがすでにクリアされている場合、このメソッドはnullを返します。戻り値:この参照が表すオブジェクト。この参照オブジェクトがクリアされている場合はnullもの凄く質素なクラスですね。言うことでさっそくお試しプログラムを組んでみました。1024];}}}無駄にメモリーを消費するインスタンスを1000個作っているだけです。使って賢いガベージ・コレクタの力で完走させようというものです。プログラムの実行結果は次のようになりました。8964プログラムが終了するまで1分8秒もかかった。私の7年前のパソコンが壊れたのかと思ってしまった。プロファイラでどんなかんじなのか確認してみました。回数、累積時間が長いような気がする。こんなものなのかなぁ・・・あっ、なにかプログラムに問題があるのかもしれない。試して比較してみるしかない。JavaFXのPrintAPIを使ってはがきの印刷をしてみた。御浚いをしておきましょう。