[Seasar-user:19528] Re: [SAStruts][警告発生]HOT deploy対象クラス(jp.XXX) が非対象クラスから参照されて通常のクラスロ ーダにロードされています。

前薗裕作 [E-MAIL ADDRESS DELETED]
2010年 3月 22日 (月) 03:35:27 JST


小林様

迅速、かつ詳細なご回答ありがとうございます。
大変助かります。

> この状況は,HOT deploy の非対象クラスが直接または
> 間接的に HOT deploy 対象のクラスを利用している
> 場合などに発生します.
>
> HOT deploy 非対象クラスとは,ルートパッケージ
> 以下ではないパッケージのクラスや,dicon に
> 記述したクラス,Servlet・Filter・Listener などです.

小林様が書かれたとおり、
非対象クラス(Servlet)から、対象クラス(ルートパッケージ内のクラス)を利用しておりました。

【エラーメッセージ】
WARN  - HOT deploy対象クラス(jp.xxx.util.hogeUtil) が非対象クラスから参照されて通常のクラスロ
ーダにロードされています。

【hogeUtilを使用しているクラス】
jp.xxx.servlet.hogeServlet

> HOT deploy 用のクラスローダを GC できず,
> パーマネント領域が不足して OutOfMemoryError に
> なる可能性があります.

確かにエラーメッセージは、「java.lang.OutOfMemoryError: PermGen space」です。

> 「SMART deploy 対象・非対象を明確に分ける」は
> 有効です.

まだ理解が足りませんので、まず、熟読させて頂きます。

> 利用しているプロダクトの名前およびバージョンを
> 明記した方がいいでしょう.

失礼しました。

【環境】
-------------------------------------------------------------
■Seasar
s2-framework-2.4.40.jar
sa-struts-1.0.4-sp7.jar

■Tomcat

Server version: Apache Tomcat/6.0.24
OS Name:        Linux
OS Version:     2.6.18-164.el5
Architecture:   i386
JVM Version:    1.6.0_18-b07
JVM Vendor:     Sun Microsystems Inc.

■Mysql
mysql  Ver 14.14 Distrib 5.1.41
-------------------------------------------------------------

以上です。参考情報を読ませて頂き、結果を返信致します。

ありがとうございました。

2010年3月22日3:00 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> 小林 (koichik) です.
>
> Date:    Mon, 22 Mar 2010 02:01:13 +0900
> From:    前薗裕作 <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:19526] [SAStruts][警告発生]HOT deploy対象クラス(jp.XXX) が非対象クラスから参照されて通常のクラスロ ーダにロードされています。
>
>> OutOfMemory発生前に、下記警告が複数発生します。
>> この警告が発生する理由、及び対応方法について不明です。
>> 参考情報等、教えて頂けると助かります。
>>
>> -----------------------------------------------------------
>> WARN  - HOT deploy対象クラス(jp.XXX) が非対象クラスから参照されて通常のクラスロ ーダにロードされています。
>> -----------------------------------------------------------
>
> HOT deploy は,リクエストごとに毎回 HOT deploy 用の
> クラスローダを作成してアプリケーションのクラスを
> ロードし,リクエストが終了するとそのクラスローダを
> 破棄することで,クラスの変更を即座に (HOT に)
> 反映するようになっています.
>
> しかし,Web コンテナ (Tomcat など) が用意する
> 通常のクラスローダにロードされてしまうと,
> HOT deploy 用のクラスローダにはロードしなくなり,
> 変更を HOT に反映することはできなくなります.
> この警告はそのような状況を示しています.
>
> この状況は,HOT deploy の非対象クラスが直接または
> 間接的に HOT deploy 対象のクラスを利用している
> 場合などに発生します.
>
> HOT deploy 非対象クラスとは,ルートパッケージ
> 以下ではないパッケージのクラスや,dicon に
> 記述したクラス,Servlet・Filter・Listener などです.
>
> 回避方法についてはこちらの
> 「SMART deploy 対象・非対象を明確に分ける」を
> 参考にしてください.
>
> http://ml.seasar.org/archives/seasar-user/2009-February/016916.html
>
> これが直接 OutoOfMemoryError には関係するかは
> この情報だけでは分かりませんが,HOT 非対象の
> クラスから HOT 対象クラスへの参照が残っていると,
> HOT deploy 用のクラスローダを GC できず,
> パーマネント領域が不足して OutOfMemoryError に
> なる可能性があります.
> それを避けるためにも,上記の
> 「SMART deploy 対象・非対象を明確に分ける」は
> 有効です.
>
>> # 尚、初めてMLに投稿します。作法が誤っている場合、ご指摘ください。
>
> 利用しているプロダクトの名前およびバージョンを
> 明記した方がいいでしょう.
> その場合は SAStruts だけでなく,Seasar2 や他に
> 使っているものがあるならならそのプロダクト,
> お使いの Web コンテナまたは AP サーバや
> DBMS 等も記述してあると,何らかのヒントが
> 得やすくなるかもしれません.
>
>
>
> --
> <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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



-- 
前薗裕作
[E-MAIL ADDRESS DELETED]


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