[Seasar-user:10469] Re: HotDeploy時のClassPoolのキャッシュについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 9月 12日 (水) 03:00:03 JST


小林 (koichik) です.

Dto 等,セッションスコープのクラスに
AOP が適用されて,エンハンスされたクラスの
インスタンスがセッションに保持されると,
エンハンスされたクラスが GC されず,
HotdeployClassLoader も GC されないままと
なってしまうことに気がつきました.

HOT deploy では,セッションに格納された
オブジェクトが次のリクエストで参照されると,
その時の HotdeployClassLoader にロードされた
クラスでオブジェクトを再作成するため,ログイン
情報のように毎回参照されるオブジェクトなら
エンハンスされたクラスも HotdeployClassLoader も
そして ClassPool も 1 回遅れで GC されることになり,
大きな問題にはならないと思うのですが,たまにしか
参照されないオブジェクトがあると HotdeployClassLoader が
GC されず,ClassPool も残ったままとなってしまいます.

これまでは HotdeployClassLoader への不要な
参照が残っていたせいで ClassPool が GC
されなかったので,HotdeployClassLoader への
参照を除去するように対処してきましたが,今回の
ケースは HotdeployClassLoader への適切な参照が
残るケースなので DisposableUtil を使って
ClassPool だけでも GC されるように対処しました.
[CONTAINER-91]


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




Seasar-user メーリングリストの案内