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)为例)
// |