什么是Java 方法内联?
我们先来看看普遍的内联函数含义。在维基百科中解释为:
内联函数:在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。
为什么要设计内联函数?
其实也就两个字:性能。借用维基百科的解释:
内联扩展是一种特别的用于消除调用函数时所造成的固有时间消耗方法。一般用于能够快速执行的函数,因为在这种情况下函数调用的时间消耗显得更为突出。
方法调用开销?
Java中一个方法中调用不仅有执行方法逻辑的开销,还有一部分底层的开销,比如:方法栈帧的生成、局部变量的进栈与出栈、指令执行地址的跳转,所以需要在一些特定时候引入内联机制,减少底层的开销,从而提高运行性能。
我们举个🌰
内联之前可能的样子:
public int fun1(int a, int b){
return fun2(a, b);
}
public int fun2(int a, int b){
return a + b;
}
内联之后:
public int fun1(int a, int b){
return a + b;
}
这样内联之后减少了fun2栈帧的生成、fun2 局部变量进栈出栈操作,