Java reflectionとpermメモリ
http://www.ibm.com/developerworks/jp/java/library/j-nativememory-aix/
まとめ
・reflectionは、-Dsun.reflect.inflationThreshold=N(default 15)以上の呼び出しが行われると、クラスが自動生成されて高速なバイトコードアクセスとなる。
それ以前は、低速なJNIアクセス。
・自動生成されたクラスは、Permメモリにロードされるので、reflectionにて大量のクラスが生成される場合、Permメモリを圧迫することになる(大量のPermが必要)。
・これを防ぐためには、「-Dsun.reflect.inflationThreshold=0」。
・PermのGCが行われると、「Unloading class sun.reflect.GeneratedMethodAccessor」が頻発することになる。
・”「-Dsun.reflect.noInflation=true」を指定すると、リフレクション・アクセサーはまったく拡張されなくなりますが、代わりに、バイトコード・アクセサーが何に対しても使用されます。”
つまり、「-Dsun.reflect.noInflation=true」は、常にクラスが自動生成されるってことか・・・。
・JSPは、リフレクションを使用する。