2015-02-18 115 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