Java编译器是否消除了getter中的函数调用?

Java编译器是否消除了getter中的函数调用?,java,function,inline,compiler-optimization,getter,Java,Function,Inline,Compiler Optimization,Getter,我能肯定吗 private int value; public int getValue() { return value; } 由编译器以与相同的方式编译 public int Value; 在指令数量和执行时间方面?我的意思是,现代编译器是否试图使函数“内联”(c++术语)?否;Java编译器不会改变这一点 但是,抖动可能会发生。否;Java编译器不会改变这一点 然而,抖动可能会发生。事实上,JIT会为您优化它。@Gilberto不会只有在发现需要时才进行优化吗?我不喜欢断言JIT总是会

我能肯定吗

private int value;
public int getValue() { return value; }
由编译器以与相同的方式编译

public int Value;
在指令数量和执行时间方面?我的意思是,现代编译器是否试图使函数“内联”(c++术语)?

否;Java编译器不会改变这一点

但是,抖动可能会发生。

否;Java编译器不会改变这一点


然而,抖动可能会发生。

事实上,JIT会为您优化它。@Gilberto不会只有在发现需要时才进行优化吗?我不喜欢断言JIT总是会优化一个“简单”的getter(不那么复杂的on),因为存在多个实现和环境。@用Java编写DaveNewton程序是一种信念的锻炼:你希望GC能够运行,你希望JIT能够编译和优化,你希望你只编写一次,程序就能到处运行。要有信心,兄弟我认为JIT也是一种编译。事实上,JIT为您优化了它。@Gilberto JIT不是只有在发现需要时才会优化它吗?我不喜欢断言JIT总是会优化一个“简单”的getter(不那么复杂的on),因为存在多个实现和环境。@用Java编写DaveNewton程序是一种信念的锻炼:你希望GC能够运行,你希望JIT能够编译和优化,你希望你只编写一次,程序就能到处运行。要有信心,兄弟我认为JIT也是一种编译。顺便说一句,JVM最多可以内联两个“虚拟”方法,这是静态编译器所不能做到的。什么是虚拟方法?从
C++
的角度来看,java中的所有方法都是虚拟的。顺便说一句,JVM最多可以内联两个“虚拟”方法,这是静态编译器无法做到的。什么是虚拟方法?从
C++
的角度来看,java中的所有方法都是虚拟的。