2015-02-18 114 views
0

如果你在Java中有例如:Java方法调用优化

void methodA(int i) { ... } 

void wrapperMethodArg1() { methodA(1); } 

wrapperMethodArg1(); 

当你调用第二种方法,将JVM最终做两个或一个方法调用?

+0

显而易见2它的机器 – 2015-02-18 00:01:31

+2

它最终会做两个或一个方法调用。 – isnot2bad 2015-02-18 00:02:50

+0

编译器可以选择通过内联方法调用来优化代码。 – shmosel 2015-02-18 00:03:44

回答

0

您正在谈论内联方法wrapperMethodArg1

答案是:你不能提前告诉。编译器可能不会内联它,因为这会阻止反射调用,但是JVM可能会在运行时动态执行它,如果该方法经常被调用到足以进行优化。

+0

如果它已经过优化,它将在运行时进行JIT分析。我怀疑Java编译器会采用与g ++编译器相同的方式。 – 2015-02-18 00:14:10