java编译器的内联是什么意思?

thinkhejie 2009-10-30 09:34:09
java编译器的内联是什么意思?
哪位高手知道吗?请指教了。
...全文
298 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lz12366007 2009-11-01
  • 打赏
  • 举报
回复
关键字: 内联函数
以前用过C++,知道它里面有一个内联函数这个概念,一般情况用inline关键字修饰,在C++定义类时,那种写中Class定义里面的函数,也被编译器当做内联函数处理。

说了这么多,还没说什么是内联函数。所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度。

现在该说Java了,对应Java语言中也有一个关键字final来指明那个函数是内联的,例:
Java代码 复制代码

1. public final void doSomething() {
2. // to do something
3. }

public final void doSomething() {
// to do something
}



该方法在被调用时,会在调用处直接展开使用,从而提高程序执行速度。此外final关键字还有一个作用,防止doSomething方法在子类中被覆盖,如果你希望doSomething是一个最终行为的话,那它应该被设计成final。

内联不一定好,当被指定为内联的方法体很大时,展开的开销可能就已经超过了普通函数调用调用的时间,引入了内联反而降低了性能,因为在选择这个关键字应该慎重些,不过,在以后高版本的JVM中,在处理内联时做出了优化,它会根据方法的规模来确定是否展开调用。
feiyangdesky 2009-10-30
  • 打赏
  • 举报
回复
什么???
Brodie 2009-10-30
  • 打赏
  • 举报
回复
google, java inline compile, the first question.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧