在 C++ 中,我可以声明一个“内联”方法,编译器很可能会内联它。据我了解,Java 中没有这样的关键字。
如果 JVM 决定这样做,内联是否完成?我能以某种方式影响这个决定吗?
最佳答案
其他几个答案表明只能内联 final方法 - 这是不正确的,因为 HotSpot 足够聪明,只要它们没有被覆盖,就能够内联非 final方法 还。当加载一个覆盖该方法的类时,它可以撤消其优化。显然,使方法最终意味着永远不需要......
基本上让 JVM 完成它的工作 - 它在确定内联位置方面可能比你要好得多。
您是否有过确信 JVM 做得不好的情况?假设您使用的是 HotSpot,您是否尝试过使用服务器版本而不是客户端?这可以产生巨大的差异。
关于java - Java中的内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159087/