java - 对非原始静态数据使用 Final 修饰符是否会带来性能提升?

标签 java performance final primitive compiler-theory

在 Java 中对非原始静态数据使用 Final 修饰符是否会带来性能提升?

例如:

static final Thread t2 = new Thread(new Thread_2());

对比:

static Thread t2 = new Thread(new Thread_2());

我的意思是,基元的 static final 定义了一个真正的常量,并且很适合使用,因为它的值在编译时已知,但是在这种非基元情况下使用 Final 可以触发任何优化吗?

在这种情况下使用final有作用还是浪费?

请不要回答风格/良好实践的问题,而只回答性能方面的问题。

最佳答案

如果 JVM 知道某个值永远不会改变,它可以进行一些优化(例如,禁用 null 检查),因此这会带来一些小的性能提升。然而,在几乎所有情况中,这种增益都太小而无法被注意到或担心。我对你的程序不太了解,但我猜想花时间制作变量 final 最好花在开发更有效的算法上。

关于java - 对非原始静态数据使用 Final 修饰符是否会带来性能提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452360/

相关文章:

java - Hibernate 参数化 sql 查询缓慢且活跃的 oracle session

java - 需要在子类中初始化一个静态final字段

java - 添加了 KeyListener 但按下时 keyEvent 不起作用,是什么问题?

java - 如何同时运行两个 FOR 循环

c - 如何检查 no 是否为阶乘?

java - 从内部类内部访问局部变量

java - 最终变量和构造函数重载

Java左移澄清

java - hsqldb 弄乱了我服务器的日志

c# - 通过 PowerShell 启动性能监视器数据收集器集?