[Seasar-user:10351] Re: HotDeploy時のClassPoolのキャッシュについて
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 9月 6日 (木) 14:00:06 JST
小林 (koichik) です.
Date: Thu, 06 Sep 2007 03:07:51 +0900
From: "BABA,Yasuyuki" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10345] Re: HotDeploy時のClassPoolのキャッシュについて
> ただ、ヒープ使用量が最大値近くにならないと GC が発生してもなかなか開放さ
> れず、早いタイミングで何度もリクエストが来た場合には、GC が間に合わずに
> OutOfMemoryError が発生しているようでした。
こちらで確認した限りではあっさりと GC されます.
なかなか解放されないのは,その間に何らかの
参照が残っているのではないでしょうか?
> ClassPoolUtil#classPoolMap の値(ClassPool)を弱参照にしたり、HotDeploy終
> 了時にエントリを削除したりした場合は、GC が発生したときにはヒープ使用量
> が最大値近くになっていなくても ClassPool のインスタンスが即座に開放され
> るようになって、OutOfMemoryError が発生しなくなりました。(発生しづらく
> なっているだけかもしれませんが。)
ClassPool への参照を WeakReference にすることは
あり得ません.COOL deploy や WARM deploy で
使い続ける場合に GC されると困るためです.
DisposableUtil でクリアするのは弊害がないと
思われるので対応する可能性はありますが,
その前にちゃんと状況を把握したいところです.
原因が分からないまま場当たりの対処で結果オーライ
というのは避けたいので.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内