2010年10月22日金曜日

seasar2のdicon設定 namespace指定はメモリを喰う?

seasar2のdiconファイル定義では、components要素に
namespace属性を指定できます。
http://s2container.seasar.org/2.4/ja/reference/html/config-dicon.html#d0e1484

名前空間を指定できるわけですが、これを指定すると
メモリ使用量(heapsize)がけっこう増えます
(もちろん登録コンポーネント数にもよりますが)。
heapdumpして確認するとS2ContainerのHashMapの
容量がだいぶ変わることがわかりました。

S2Container内で管理しているコンポーネント名が
長くなると思うので単純に増えそうではありますが。。

今回はAutoRegisterで大量にコンポーネントを登録し、
namespaceを全てのdiconにつけていました。
必要のないnamespace指定を取り除いたところ、
以下のような結果となりました。
namespaceをつける        S2ContainerのHashMap 約1GB
namespaceをつけない(※1) S2ContainerのHashMap 約400MB 

(※1)もともとseasar2のjarに含まれているdiconを拡張したものは
     namespaces指定そのまま。
     データソースの切替等でJDBC関連の必要な部分はnamespaceを指定。

使用しているS2のversionはseasar2.4.25で、だいたい2.4系はSmartDeployを
使用すると思うのであまり注意は必要ないかもしれませんが、
とりあえずnamespaceを無駄に指定するのはよくなさそうですね。

0 件のコメント:

コメントを投稿