java reflection.
Method.invoke
调用链
method.invoke() |
补充说明
下文中
代理类
皆为MethodAccessor
的子类当
ReflectionFactory.noInflation = true
会直接生成代理类
反射调用方法执行次数大于
ReflectionFactory.inflationThreshold(默认15)
时,会生成代理类,用于提高反射执行效率,代理类反编译后源码大致如下(以String#toCharArray
为例)
// |
当系统中反射调用过多时会导致metaspace溢出,因为生成了过多的代理类
noInflation
可通过sun.reflect.noInflation
配置inflationThreshold
可通过sun.reflect.inflationThreshold
配置
Constructor.newInstance
调用链
和上文大致类似
补充说明
- 生成代理类的代理类反编译后源码大致如下(以
new String(String)
为例)
// |