Mic*_*zyk 6 java performance jit final bytecode
类文件格式是否为使用变量的最终关键字提供支持?
或者它只是从代码中推断出变量的有效终结性而JIT编译器基于它执行优化?
这里,在类文件格式文档中,他们提到了关于final关键字,但仅限于将其与final块和final类一起使用的情况.最终变量
没有任何内容.
不,在类文件中没有编码这样的信息.
您可以通过使用final局部变量编译源文件来轻松验证这一点,而不使用final- 结果类将是相同的.
但是,Java 8添加了一个MethodParameters属性,用于记录有关方法参数的名称和访问标志的信息.这意味着,您可以检查方法参数是否是final.
即时编译器不需要了解final本地人 - 他们可以轻松确定任何表达式的实际范围.即使变量不是最终的,例如
int x = 1;
// ... code A ...
x = 2;
// ... code B ...
Run Code Online (Sandbox Code Playgroud)
编译器将优化代码A,就像x始终一样1,并且代码B似乎x总是如此2.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |