Java反射的缺点——性能开销

标签 java reflection

我正在研究 Java 反射的缺点,并从 Java 文档中发现了以下声明:

Performance Overhead

Because reflection involves types that are dynamically resolved, certain Java virtual machine optimizations can not be performed. Consequently, reflective operations have slower performance than their non-reflective counterparts, and should be avoided in sections of code which are called frequently in performance-sensitive applications.

请帮助我理解这一点。反射涉及动态解析的类型意味着什么? JVM一般提供哪些优化?

最佳答案

正如你可以很容易地理解 JVM 在启动你的程序时做了很多改进来提高代码的性能(这是一件很棒的事情!)但是当我们谈论反射时,我们谈论的是一个会发生变化的事情运行时(我可以说它是不确定的……JVM 在执行它之前无法知道它会是什么),因此 JVM 无法对其进行改进,因为在运行时的某些情况下它的行为可能会有所不同。

正如我在此类问题中总是说的那样:在这里您可以找到非常了解反射如何工作的人的答案..也可以四处搜索。

关于Java反射的缺点——性能开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22132207/

相关文章:

variables - dart - 镜像 - 如何使用镜像知道变量名称

java - NoClassDefFoundError : scala/collection/Seq

c# - 将 JSON 反序列化为多个继承类

java - 如何在AsyncTask中传递两个参数?

python - 使用 setattr 添加的属性未显示在 help() 中

java - 如果我将 long 数据类型分配给 float 数据类型,为什么会出现舍入错误?

java - 如何为 jar 配置 log4j 日志记录?

c# - 如何从 C# 访问 PowerShell 主机

java - 如何在流中使用两个过滤器进行不同的转换

java - 如何转换 javax.xml.datatype.Duration