java.lang.refパッケージ

id:ppoiさんにいろいろレクチャーしてもらったが、ディープ過ぎて咀嚼できてないので、とりあえずメモ。

WeakReferenceの使用例はjava.util.WeakHashMapとcommons-logging-1.1のWeakHashtable。
commons-logging-1.0.4まではクラスローダとLogFactoryのmapをHashtableでもってキャッシュとして使っていたが、
これだとTomcatでコンテキストのリロードを繰り返すうちにキャッシュが肥大化してOutOfMemoryErrorになってしまうらしい。

PhantomReferenceの使用例はcommons-io-1.3.2のFileCleaningTracker。どうもStrutsのファイルアップロード処理の際のテンポラリーファイルを消すために
つかっているっぽい。