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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 11月 12日 (月) 06:30:23 JST


小林 (koichik) です.

Date:    Mon, 12 Nov 2007 03:33:29 +0900
From:    Taiki Matsuyama <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11609] [teeda] Perm 領域について

> 1. jconsole で Perm Gen を監視しながら、teeda-html-example のメニューを
> いろいろ実行してみると、Perm Gen が増える場合と、増えない場合が
> ありますが、この違いは何でしょう?

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

> たとえば、dto を、<root>/dto に配置するのと、サブアプリケーションに配置している
> 差とか?

それはないと思います.

> 2. Tomcat Manager から、アプリケーションの停止/起動を繰り返していると、
> あっというまにPerm Gen の使用率が増加し(特に起動時)、解放されないようです。
> これの回避方法は何かないでしょうか?
> Full GC が発生しても、多少減るぐらいのようです。

メモリリークしていて WebappClassLoader が GC
されないと,クラスがアンロードされないため,
パーマネント領域も解放されません.

Teeda HTML Example で試した限りでは,何度か
停止/起動を繰り返すと「ロードされているクラス」が
7000〜9000 前後,パーマネント領域は 27〜32M 前後で
推移するので,ひたすら蓄積していくようなリークは
していないように思います.

ただし,「GC の実行」をしてから実際にパーマネント
領域の解放やクラスのアンロードが行われるまでの
タイミングはバラバラで,毎回きっちり増えた分が
戻るとは限らないようです (戻るときもあるけど).


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