[mayaa-user:376] Re: 再インストールでのOutOfMemory

suga ko.suga @ gmail.com
2006年 12月 6日 (水) 17:25:31 JST


suga です。

On 12/6/06, yondori @ infoseek.jp <yondori @ infoseek.jp> wrote:
> 1.1.4(リリース版)で試してみましたが、
> 同様にアプリのみのインスト・アンインスト繰り返し、
> もしくはLong RunでOutOfMemoryが発生します。
>
> この点については調査中と考えてよろしいでしょうか?

はい、OutOfMemory 関連はまだ調査中です。
jar 関連の件だけでも正式にリリースした方が良いと考えましたので、
1.1.4 をリリースしました。


> それから、Mayaaソースを見て思ったのですが、
> ソース内に、コレクションがstaticやstatic finalで
> 定義されている箇所があります。
>
> アプリサーバーが稼働している限り、単一のVMで動き続けるため、
> アプリをアンインストールしただけでは
> オブジェクトが残ってしまうのではないでしょうか?

アプリサーバの造りにもよるのですが、static 変数は基本的には
そのアプリケーション用 ClassLoader ごと解放され、普通に GC の
対象になります。
少なくとも Tomcat と Sun の 1.5.0_09 では、static なフィールドは
配備解除後の GC で finalize が呼ばれます。


念のため動作確認してみたところ、一点私が勘違いしていることが
わかりました。
上記組み合わせで static "final" のフィールドは開放されません。
ただし再配備すると static final フィールドにセットし直すため、
その前のオブジェクトは解放されるようです。
従って単純に static final なフィールド全部が OutOfMemory の原因に
なるというわけではないようです。

ちょっとこのあたりはしっかり調査しないとわかりませんが、
WAS と Tomcat とでこのあたりの動作が違わないかどうかも
調査する必要があります。

-- 
suga ( ko.suga @ gmail.com )


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