java 关于反射性能

来源:3-5 Java 泛型的实现机制是怎样的?

用户1148542

2019-08-08

性能开销 :反射涉及了动态类型的解析,所以 JVM 无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射
这是我在网上看到的这段话,其中反射涉及了动态类型的解析
这个动态类型是什么意思, 请教下老师能举例说明下么,谢谢!

写回答

1回答

bennyhuo

2019-08-08

严格意义上java没有动态类型,不涉及动态类型的解析,只不过是通过反射api来访问java的类和对象及其成员,反射api会在运行时才能确定访问的是什么,存在类似签名信息这样的数据的读取来实现访问,会在第一次的时候有相对明显的开销,在运行的时候又由于指令不能在编译期确定,因此也基本上不存在指令优化,也会是慢的一个原因。

不过java虚拟机现在对反射的优化已经很不错了,说很慢其实不太公平。只要运用得当,反射基本不会对程序造成什么性能问题。

0
1
用户1148542
谢谢老师
2019-08-08
共1条回复

大厂资深面试官 带你破解Android高级面试

改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程

1636 学习 · 222 问题

查看课程