HOTdeployとEnumとBeanUtils

ここのところ、Enumを使うと、PermGenを使いきる問題に悩まされていたのだけど、やっとこ一段落。状況としては、ActionかActionFormとかにEnumを拡張したクラスでプロパティを値をセットして持たせておいて、それをJSPで bean:write とかでそのプロパティを参照しようとすると、commons の BeanUtils の BeanUtilsBean でその情報をキャッシュしていってくれる。っで、このとき、Mapにキャッシュする際にクラスローダーがキーとしてセットされる。WeakHashMapだから、普通は、HotdeployClassLoader とかでも消えてくれるのだけど、Enumのプロパティだと、こいつ自身が消滅しないせいか(staticだから?)、そのクラスローダーも消滅せず、GCされないでクラス情報が残り、PermGenが消費されていくみたい。c:bean 以外にもこの現象が起きるのがあるのかもしれないけど、HOTdeployとEnumとBeanUtilsのあわせ技には注意しようっと。

カテゴリー: SAStruts パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.