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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 3月 22日 (月) 03:00:00 JST


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