void myMethod(Object arg)
{
arg.getThing().method1();
arg.getThing().method2();
}
基本的 Java 6 安装是否会将其优化为对访问器的单个调用(可能通过将引用存储在本地)。我意识到如果有多个线程,优化器可能不得不避免这样做。是否有我可以从几乎所有 Java 6 JVM 获得的常见优化列表?
例子:
{
Object local = arg.getThing();
local.method1();
local.method2();
}
最佳答案
我不希望 javac 编译器在这里进行任何优化,因为 getThing()
的值会随着时间和调用之间发生变化(例如,一个随机值,或者 pop()
操作栈,或者当前时间。你明白了)。
如果 JIT 编译器发现 getThing()
方法总是返回相同的东西,也许它可以对此进行优化,但我不会指望这一点。如果 thing
的值被另一个线程更改,即使是最简单的 return thing;
语句也可以返回不同的值。
关于java - Java 中的局部引用优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224586/