WebappClassLoader leak: loaded Classes?


WebappClassLoaderがメモリリークするかもしれないというbugzilla発見。
WebappClassLoaderが内部で使用しているResourceEntryクラスが
Classをそのまま持っているから、参照が開放されないかもだと。
ちょろっと見る限りは、たしかにResourceEntryがそのままClassの参照を保持しているから
WebappClassLoader.stop()でresourceEntriesをclearしても、
ResourceEntry.loadedClassがどこかから使われてたらクリアされないのかな。
WeakReferenceを使うべきかなとBugzillaに書いてあるけど、たしかにそっちの方がいいかも。


うーむ、解説希望。
ちなみにWebappClassLoader.clearReferences()でも
 org.apache.commons.logging.LogFactory.release(this);
てやってるw