java.lang.refパッケージ
id:ppoiさんにいろいろレクチャーしてもらったが、ディープ過ぎて咀嚼できてないので、とりあえずメモ。
- http://blog.livedoor.jp/lalha_java/archives/50302431.html
- http://blogs.wankuma.com/kacchan6/archive/2007/04/17/71882.aspx
- http://blogs.wankuma.com/nagise/archive/2007/07/29/87593.aspx
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のファイルアップロード処理の際のテンポラリーファイルを消すために
つかっているっぽい。