Unloading class sun.reflect.GeneratedMethodAccessor
是正常的现象,说明大量使用反射生成的class被jvm正确回收了。
看来你应该是permgen区outofmermory了,可以尝试在启动配置中加大permgensize,不过不建议太大,不要超过300M,而且这样也只能治标不能治本。
jdk dynamicproxy每次都会生成新的代理类,如果你不卸载这些代理类,permgen区outofmemory是迟早的事情。
如果你真的不想卸载加载到jvm中的代理类,就要考虑复用生成的代理,这样的话,jdk的dynamicproxy是不行的,你要使用cglib来生成可复用的代理类。
因此,你有两条路可以走
1、继续使用jdk的dynamicproxy,但不要禁止class卸载。
2、使用cglibproxy,复用代理类,避免大量生成的代理类。
加上-noclassgc,可使jvm不卸载加载的class