java - Java 中的局部引用优化

标签 java optimization

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/

相关文章:

java - 如何使 JFormattedTextField 使用 $1.55,但将值存储为整数 155?

从 Riak 检索数据时出现 java.io.EOFException

Java,将两个整数组合成长结果负数

python - Pypy vs Python 中的计数算法性能优化(Numpy vs List)

c++ - 我的初始化有什么问题?

c++ - 如何优化 SDL 2 中许多纹理的渲染?

java - 定时等待认证模拟考试

java - java中的模式匹配错误

algorithm - 在给定的约束条件下,我可以使用哪些算法/方法来实现一周中几天的任务调度?

sql - 查询优化以减少多个连接语句