[seasar-javadoc:1002] Re: UnitClassLoader

Hideaki Suzuki [E-MAIL ADDRESS DELETED]
2007年 8月 27日 (月) 23:54:22 JST


鈴木(belltree)です。

ほぼ一ヶ月空いてしまいました…すみません orz
長い期間あけてしまうと、今までのメールの内容をもう一度脳味噌にロード
し直さないといけないので(UnitClassLoaderか!)良くないですね…反省

気を取り直してがんばってまいります♪

後藤さんの指摘を踏まえ、ちょっと内容をカテゴリ分けしてみました。
実際にこのスタイルで書くわけではありません。あくまで記述内容を整理する
ための分類です。
「Javadocは、だいたい1時間!」という高橋名人の教え(?)に従い
時間制約の中でやりましたので、まとまり具合はイマイチだと思いますが…
一応、再スタートしたということで続けて行きたいと思います。 ^^;;;
(無理やり…)

 * ■概要
 *   {@link org.seasar.extension.unit.S2TestCase S2TestCase} を使用した単体テスト等で使用する
 *   {@link ClassLoader} です。
 * ■目的(存在理由)
 *   アスペクトを適用したクラスを大量に使用するJUnitテストケース(またはスイート)を連続して実行する際に、
 *   {@link OutOfMemoryError}の頻発を回避する目的で使用します。
 *  <詳細説明>
 *   テストケースによっては、 アスペクトを適用したクラスが大量に生成される場合が考えられます。 
 *   クラスは通常、 VMのパーマネント領域にロードされますが、
 *   新たにクラスをロードする領域がなくなると、 {@link OutOfMemoryError} が発生します。 
 *   この問題を回避するために、 {@link org.seasar.extension.unit.S2TestCase S2TestCase} では、
 *   テストケースの中で使用するクラス群を、 このクラスローダでロードし、 テスト終了後、クラスローダごと、
 *   そのテストケースで使用したクラス群をアンロードするという方法を取っています。
 * ■有効ドメイン(適用すると有効な問題領域)
 *   アスペクトを適用したクラスが大量に生成されるテストメソッドを多く含むテストケース。
 * ■機能説明(今回の場合は使用される際の振舞い?)
 *   ★S2TestCaseを使用した際に、このクラスローダによりOutOfMemoryErrorの発生が抑止されるメカニズム。
 *     1.テストメソッド実行前に、新たなUnitClassLoaderが用意される。
 *     2.アスペクトを適用したクラスがUnitClassLoaderによりパーマネント領域にロードされる。
 *     3.テストメソッドが終了するとロードされたクラスは、UnitClassLoaderのアンロードに伴いGCにより除去される。
 *     4.パーマネント領域は、テストメソッド実行前の状態に戻る。
 *     ⇒テストメソッドが次々に実行されても、クラスオブジェクトがパーマネント領域に溜まらない。
 * ■具体例
 *   (なし)

もう一度、後藤さんの文書も良く読みつつ、自分の中でも整理し直して、
再投稿するつもりです。

もうすぐ日付も変わりますので、本日はこのへんにて ZZzz・・・

/** 
 * @auther Hideaki Suzuki
 * @contact [E-MAIL ADDRESS DELETED]
 */



seasar-javadoc メーリングリストの案内