JVM专题之性能优化?jvm 性能优化

JVM专题之性能优化运行时优化
方法内联
> 方法内联,是指 **JVM在运行时将调用次数达到一定阈值的方法调用替换为方法体本身** ,从而消除调用成本,并为接下来进一步的代码性能优化提供基础,是JVM的一个重要优化手段之一。 > >

运行时优化

方法内联

方法内联是指JVM将运行时达到一定调用次数阈值的方法调用替换为方法体本身。这降低了调用成本,并为进一步优化代码的性能奠定了基础。重要的优化方法。

**笔记:**

* **C++中的内联是编译后内联,而Java中是运行时内联**

简单概括来说,就是将一个方法内调用的其他方法的逻辑嵌入到该方法内部,作为该方法本身的一部分,通过不调用该方法来节省调用函数所带来的额外成本。

为什么会出现方法内联呢?

发生方法内联的原因是,除了执行自己的逻辑的开销之外,函数调用(方法调用)还有额外的、未知的开销。 **这部分额外开销主要是由生成方法堆栈帧、压入参数字段、弹出堆栈帧和跳转指令执行地址引起的**。例如,我有这样的代码:

“Java

公共静态无效函数_A(int a,int b){

//做一点事

函数_B(a,b);

}

公共静态无效函数_B(int c,int d){

//做一点事

}

公共静态无效主(字符串[] args){

函数_A(1,2);

}

””

代码执行流程如下:

因此,如果有太多嵌套方法调用或太多Java 方法,则额外的开销会很大。

想象一下调用get/set 方法。

“Java

公共int getI() {

还我

}

公共无效setI(int i) {

这个.i=i;

}

””

**执行逻辑本身的开销可能没有调用此方法所需的额外解锁那么高。如果频繁调用类似的方法,即使此类方法的执行时间很短,实际的相对执行效率也会很低。这也是JVM 在热点代码中执行方法内联的原因,从而节省您调用调用函数的额外成本。 **

**以下是一些可能的内联形式:**

“Java

公共int add(int a, int b, int c, int d){

返回add(a, b) + add(c, d)。

}

公共int add(int a, int b){

返回a + b。

}

””

**内联后:**

“Java

公共int add(int a, int b, int c, int d){

返回a + b + c + d。

}

””

内联条件

如果方法满足以下条件,则JVM 可以内联该方法:

* 热点代码。

如果一个方法被频繁执行,则意味着优化的潜在价值更大。代码可以执行多少次才被认为是热代码?这是由编译器的编译模式决定的。对于客户端编译模式,该数字为1500;对于服务器编译模式,该数字为10000。二等

以上#JVM主题性能优化相关内容摘自网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93235.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月5日 下午7:58
下一篇 2024年7月5日 下午8:54

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注