编译器内联的getter和setter的概率

我的问题很简单:

问: Java中的编译器会将getter / setter方法内联的几率是多少?
(显然没有明确的答案,但其他信息将不胜感激)

额外:我知道编译器(标准和JIT)总是有可能决定内联方法,而当涉及到getter和setter这通常是程序员想要的。

提前致谢。

编译器(javac)往往对优化的影响可以忽略不计,因为优化发生在运行时。

从JIT开始,它可能迟早会内联。取决于代码的使用程度,所以最初可能会看到函数调用开销,但是当getter / setter被充分调用时会被内联。

我想象零(至少在非JIT情况下),因为这些是Java Bean约定并且它们总是需要公开,因此编译器无法预测谁可以调用这些方法。 您可能会更改其中一个会破坏内联调用方的实现。 没有什么要求它们只需要实现来设置字段。

编译器可以在方法final时内联,并且调用者可以访问所访问的字段。 然后由编译器决定该方法是否“足够简单”以进行内联。

实际上,设置或获取字段通常被认为足够简单,因此将内联可访问字段的最终访问者。 私人领域的访问者将在他们的申报课程中内联; 受保护字段的访问器将在整个声明包和任何派生类中内联; &C。

在运行时,JIT可能会根据对运行代码的分析执行额外的内联。