[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 メーリングリストの案内