java执行方式,编译 or 解释

PS:默认hotspot虚拟机

1.java是混合执行的方式,即解释+编译(JIT,热点代码,hotspot的由来)。

2.也可以通过VM参数指定执行模式

     1)-Xmixed 默认的混合模式模式,开始时候全部解释执行,启动速度较快,当检测到热点代码,则将其编译为本地代码(二进制       机器码,类似exe)提高执行效率。

     2)-Xint,解释模式,启动快执行慢。

     3)-Xcomp,编译模式,执行快,启动慢。

3.热点代码如何检测

   1.多次被调用的方法,有个方法计数器,jvm有监测机制,方法执行频率大于一定次数

   2.多次被调用的循环,有个代码执行的循环计数器,检测。

4.验证

@Slf4j
public class ExecutorWayMixed {
    private static final int LOOP_TIMES = 20_0000;

    public static void main(String[] args) {
        final long startTime = System.currentTimeMillis();
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < LOOP_TIMES; j++) {
                testLoop();
            }
        }
        log.info("It is cost time {} ms", System.currentTimeMillis() - startTime);
    }

    /**
     * 空循环,耗时
     *
     * @return void
     */
    private static void testLoop() {
        for (long i = 0; i < LOOP_TIMES; i++) {
            i++;
        }
    }
}

a.混合模式(解释+编译,默认选择的模式):不指定,或者-Xmixed,19650ms

 

b.解释模式:-Xint,十分钟,还没执行完。

c.编译模式:-Xcomp,27161ms

 

上述栗子中,还是默认的混合模式效果最佳。

 

上一级->基础知识点篇

首页->目录大纲

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值