Google Collection LibraryのMapMakerが使いやすい

Google Collection Libraryはその名の通りGoogleが作っているオープンソースJavaコレクションライブラリである。少し前に自分の作っているプログラムの中でキャッシュを実装しなければならないシチュエーションに遭遇したとき、このGoogle Collection Libraryの中に含まれているMapMakerのお世話になった。
MapMakerはキーと値についてそれぞれ強参照、ソフト参照、弱参照を切り替えて値を結び付けられるMapである。これの利点はキャッシュ等として使用した際、何も考えなくても古いキーと値の破棄をJavaGCが全自動で行ってくれるという点である。例えばnew MapMaker().softKeys().softValues().makeMap()として作ったMapインスタンスは、ソフト参照のキーと値を持つのだが、こいつはキーと値を大量に挿入してもOutOfMemory例外を出さず、出しそうになったときにキーと値を適宜破棄してくれるのである。これはキャッシュを実装するときにとても都合が良い。
SoftReferenceを使ったMapとLRUアルゴリズムを比べた場合に、SoftReferenceを使用したMapの場合のほうが良い性能を出せたと主張している論文もある。(中身は見ていない)
データベースキャッシュや画像キャッシュ、ファイルキャッシュのお供にどうぞ。
MEMORY SENSITIVE CACHING IN JAVA http://ecet.ecs.ru.acad.bg/cst05/Docs/cp/SII/II.20.pdf