2015年3月24日火曜日

classloaderとstatic変数

classloaderとstatic変数の関係を調査してみた。

基本的にはclassloaderが異なると、static変数の値も異なるというのが仕様のようだ。
ただし、classloaderのhierarchyで同じparentを共有していると、static変数は共有される。

詳細はstackoverflowで。

Multiple instances of static variables


ちなみに下記の日本語ブログでも、static変数はクラスローダごとに別になるとの情報があるが、ブログに載ってるサンプルコードを実行したところ、2つのクラスローダでstatic変数は共有されているようだった。

[Java]別々の ClassLoader にロードされたクラスのフィールドは別になる


URLClassLoaderとPluginClassLoaderが階層的にどういう関係にあるのか調べてないけど、親をどっかで共有してたりするのだろうか。または、2006年の情報なのでjavaのバージョンが関係して足りすのだろうか。


0 件のコメント:

コメントを投稿