[seasar-javadoc:979] Re: UnitClassLoader

Hideaki Suzuki [E-MAIL ADDRESS DELETED]
2007年 7月 24日 (火) 01:58:52 JST


鈴木(belltree)です。

> 後藤(goto)です。
> ペアやらせてもらいます。どうぞよろしくです。
ありがとうございます m(_ _)m  勇気100倍です♪

> ClassLoaderは難しいなぁ、と躊躇していたりしましたが何ごともチャレンジっていうことで。
私ももわっとしたイメージしかないので、コレを期に、より鮮明なイメージに
したいと思っとります。お互いにスキルアップしませう♪

> >  * {@link org.seasar.extension.unit.S2TestCase S2TestCase} を使用した単体テスト等で使用する
> >  * {@link ClassLoader} です。
> >  * 
> >  * アスペクトを適用したクラスを大量に使用するJUnitテストケース(またはスイート)を連続して実行する際に、
> >  * {@link OutOfMemoryError}の頻発を回避する目的で使用します。
> >  * 
> >  * テストケースによっては、 アスペクトを適用したクラスが大量に生成される場合が考えられます。 クラスは通常、 VMのパーマネント領域にロードされますが、
> >  * 新たにクラスをロードする領域がなくなると、 {@link OutOfMemoryError} が発生します。 この問題を回避するために、
> >  * {@link org.seasar.extension.unit.S2TestCase S2TestCase} では、
> >  * テストケースの中で使用するクラス群を、 この{@link ClassLoader}でロードし、 テスト終了後{@link ClassLoader}ごと、
> >  * そのテストケースで使用したクラス群をアンロードするという方法を取っています。
> 
> まずは細かいところを突いてみると、
> >  * テストケースの中で使用するクラス群を、 この{@link ClassLoader}でロードし、 テスト終了後{@link ClassLoader}ごと、
> ここの文脈で「{@link ClassLoader}」を使うと???って混乱してしまう人がいるかも、っていうか私がそうでした。私だけ?
> 一番最初の文で「{@link ClassLoader}」があるので十分かなと。なので、2つとも「@link 」を外して、
> 
>  * テストケースの中で使用するクラス群を、 このクラスローダでロードし、 テスト終了後クラスローダごと、
> の方がいいかなと思いました。
なるほど〜。確かに、クドイですね。日本語の“クラスローダ”の方が、
いいですね。 ClassLoaderとすると、より具体的なことを連想させて、
余計なことを考えさせてしまう可能性がありますね。なのでこれで!

> あと、クラスローダの親子関係にも触れた方がわかりやすい気がするので、
> 
>  * {@link org.seasar.extension.unit.S2TestCase}では、 テストメソッド毎に{@link org.seasar.framework.container.S2Container S2コンテナ}を生成してアスペクトを適用したクラスをクラスローダにロードします。
>  * ここで、 テストメソッドが終了してもテストケースが終了していない場合、
>  * アスペクトを適用したクラスはクラスローダにロードされたまま次のテストメソッドを実行することになります。
>  * このままでは新たにクラスをロードする領域がなくなる恐れが発生するため、 実際の{@link org.seasar.extension.unit.S2TestCase}では、
>  * テストメソッド毎にカレントクラスローダを親とする<code>UnitClassLoader</code>を生成し、
>  * アスペクトを適用したクラスをこのクラスローダにロードさせます。 テストメソッド終了後はその<code>UnitClassLoader</code>自体をアンロードするため、アスペクトを適用したクラスも一緒にアンロードされることになります。
> 
> こんな記述をしてみました。でもこのままだと鈴木さんの書いた部分とかなりカブっているのでうまく折り合いをつけたいなと。
> その前に誤った認識がないかチェックをお願いします。
テストメソッド毎に、テスト用のクラスローダを作り直しているという
ところまで、ソースを深読みしてませんでした…そうかな〜とは
思っていたのですが…^^;;;
この文章の方が具体的で分かりやすいですね。

ここで、ちょっと、このJavadocを読んだ人に何を伝えたいか?
というポイントを箇条書きにして整理してから、折り合いを
つけて、文章を再構成していくなんてのはどうでしょう?

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



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