[seasar-javadoc:981] Re: UnitClassLoader

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 7月 27日 (金) 04:00:28 JST


小林 (koichik) です.

Date:    Fri, 27 Jul 2007 03:32:54 +0900
From:    Hideaki Suzuki <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [seasar-javadoc:980] Re: UnitClassLoader

> ■通常のJUnitのTestCaseを使用する場合のシナリオ
> 1.クラスローダーとして、システムクラスローダーが使用される。
> 2.アスペクトを適用したクラスがパーマネント領域にロードされる。
> 3.次々とテストメソッドを実行する際、クラスがパーマネント領域に溜まってゆく。
> 4.パーマネント領域が満杯になるとOutOfMemoryErrorが発生する。

2 のせいで 3 になるのは,システムクラスローダは
決してアンロードされることがなく,システムクラスローダに
ロードされたクラスも決して GC されないためです.
ココ重要.

> ■S2TestCaseを使用する場合のシナリオ
> 1.テストメソッド実行前に、空のクラスローダーが用意される。(UnitClassLoader)
> 2.アスペクトを適用したクラスがUnitClassLoaderのパーマネント領域にロードされる。
>   ※パーマネント領域がクラスローダー毎に用意されるのかどうか未調査です…
> 3.テストメソッドが終了するとロードされたクラスは、UnitClassLoaderのアンロードに伴い除去される。
> 4.パーマネント領域は、テストメソッド実行前の状態に戻る。

パーマネント領域はクラスローダ毎にあるわけではありません.
UniClassLoader はテストメソッドが終了して他からの参照が
なくなればアンロードされ,UnitClassLoader にロードされた
クラスも 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-javadoc メーリングリストの案内