[Seasar-user:11617] Re: [teeda] Perm 領域について

松山 大樹 [E-MAIL ADDRESS DELETED]
2007年 11月 12日 (月) 16:47:55 JST


松山です。

>新たにロードされるクラスの有無やその数の影響では
>ないかと思います.
>COOL deploy の場合,コンポーネントのクラスそのものは
>コンテナの初期化時にロードされますが,依存するクラスまで
>全てがロードされるとは限らないので,実行時に初めて
>ロードされるクラスが多い場合はパーマネント領域の使用量が
>大きく増えます.

なるほど。
実行時に初めてロードされるクラスとは、たとえば、メソッド内で
new しているような場合などでしょうか?
他にどんな場合がありますか?

>Teeda HTML Example で試した限りでは,何度か
>停止/起動を繰り返すと「ロードされているクラス」が
>7000〜9000 前後,パーマネント領域は 27〜32M 前後で
>推移するので,ひたすら蓄積していくようなリークは
>していないように思います.
>
>ただし,「GC の実行」をしてから実際にパーマネント
>領域の解放やクラスのアンロードが行われるまでの
>タイミングはバラバラで,毎回きっちり増えた分が
>戻るとは限らないようです (戻るときもあるけど).

こちらでも、teeda-html-example で試してみました。
Tomcat起動時のPerm 領域の使用量が、21M 程度で、
何度か再起動していくと、→ 27M → 34M → 41M → 48M と
6〜7M ぐらいずつ増えていきました。
その後で、GC を実行してみると、最終的に27M ぐらいまで落ちました。
確かに、一気に27M まで落ちるのではなく、徐々に落ちていました。

MaxPermSize ぎりぎりまで再起動を繰り返した後で、teeda-html-example の
メニューから適当に操作してみると、java.lang.OutOfMemoryError: PermGen space
で落ちるので、GC されるのが間に合っていないのだと思われます。

もう少し、GC が早く発生するように、いろいろ微調整してみようと思います。


-- 
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステムインテグレートサービスDept.
:::  Webソリューション開発Unit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]





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