[Seasar-user:10345] Re: HotDeploy時のClassPoolのキャッシュについて
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]
2007年 9月 6日 (木) 03:07:51 JST
馬場です。
Koichi Kobayashi さんは書きました:
> このため,HOT deploy の最後のリクエストに
> 使われた HotdeployClassLoader および ClassPool は
> GC されていませんでした.
>
> 修正版を以下に置いたのでご確認ください.
>
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.18-SNAPSHOT/s2-framework-2.4.18-20070905.122030-4.jar
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.18-SNAPSHOT/s2-extension-2.4.18-20070905.122030-4.jar
対応ありがとうございます。
キャッシュがクリアされることが確認できました。
> 繰り返し操作していて OutOfMemoryError になるのは
> 他にも原因があるのかもしれません.
もうすこし調べてみました。
通常はヒープ使用量が最大値近くになると ClassPoolのインスタンス(と、それ
に関連するエンハンスされたクラス情報) はきちんと開放されていました。申し
訳ありません。
ただ、ヒープ使用量が最大値近くにならないと GC が発生してもなかなか開放さ
れず、早いタイミングで何度もリクエストが来た場合には、GC が間に合わずに
OutOfMemoryError が発生しているようでした。
ClassPoolUtil#classPoolMap の値(ClassPool)を弱参照にしたり、HotDeploy終
了時にエントリを削除したりした場合は、GC が発生したときにはヒープ使用量
が最大値近くになっていなくても ClassPool のインスタンスが即座に開放され
るようになって、OutOfMemoryError が発生しなくなりました。(発生しづらく
なっているだけかもしれませんが。)
あまり頻繁に発生する事象ではないとは思いますが、なにか対処できるのであれ
ば対処していただけるとうれしいです。
--
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]
--------------------------------------
Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar
http://pr.mail.yahoo.co.jp/toolbar/
Seasar-user メーリングリストの案内