SPI*_*984 9 java performance multithreading jvm
现在,我最近提出了一个建议,你应该尽可能宽地使用关键字final.这是好的,以防止程序员射击他自己的腿 - 也就是说,重新分配不应重新分配的变量.
但是,它是否有任何其他目标?也就是说,JVM可以使用有关最终变量的信息以便以某种方式优化字节码,因此它运行得更快(构建更好的流水线或在多线程环境中使用它)?或者只是一种语法糖,可以最大限度地减少代码开发过程中出错的可能性?
就变量而言,Java 足够聪明,可以确定变量在方法中的任何位置都没有发生更改,并将这些知识用于优化目的。它不需要您标记变量final
才能知道这一点。
方法的情况略有不同:当您标记方法时final
,Java 可以更快地调用此类方法,因为它不再需要检查其覆盖。尽管如此,hotspot 仍然足够聪明,可以发现无论使用或不使用final
.
不过,一般来说,此建议旨在使您的代码更易于其他人阅读和理解:将变量设置为 Final 会告诉读者您正在设置常量;将类设为 Final 会告诉读者该类不是为继承而设计的;将方法设为 Final 会告诉读者该方法的逻辑应该在整个继承层次结构中保持不变。从长远来看,这些信息比优化正在运行的代码的潜力更有价值。
归档时间: |
|
查看次数: |
1099 次 |
最近记录: |