java反射为什么效率低

178 阅读1分钟

Java 反射效率低主要原因是:

  1.  Class.forName 会调用本地方法;

  2. Class.getMethod 则会遍历该类的公有方法,如果没有匹配到,它还将遍历父类的公有方法。这两个操作都很耗时。

  3. Method#invoke 方法会对参数做封装和解封操作(可变参数 还是Object类型 需要变成Object[]数组和包装类,生成字节码时又要把数组拆解)

  4. 每次调用需要检查方法可见性(在 Method.invoke 里)和 校验参数

  5. 反射方法难以内联和JIT 无法优化

参考1

参考2