zoukankan      html  css  js  c++  java
  • 【Java】实战Java虚拟机之五“开启JIT编译”

    今天开始实战Java虚拟机之五“开启JIT编译”

    总计有5个系列

         Java虚拟机有3种执行方式,分别是解释执行、混合模式和编译执行,默认情况下处于混合模式中。使用命令行java –version可以查看虚拟机的执行模式:

    C:UsersAdministrator>java -version
    java version "1.7.0_13"
    Java(TM) SE Runtime Environment (build1.7.0_13-b20)
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01,mixed mode)

         上面输出的“mixed mode”就表示混合模式。在混合模式中,部分函数会被解释执行,部分可能被编译执行。虚拟机决定函数是否需要编译执行的依据是判断该函数,是否为热点代码。如果函数的调用频率很高,被反复使用,那么就会被认为是热点,热点代码就会被编译执行。

         解释执行模式表示全部代码均解释执行,不做任何JIT编译,可以使用参数-Xint来开启解释执行模式: 

    C:UsersAdministrator>java -Xint -version
    java version "1.7.0_13"
    Java(TM) SE Runtime Environment (build1.7.0_13-b20)
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01,interpreted mode)

       编译执行模式和解释执行模式相反,对于所有的函数,无论是否是热点代码,都会被编译执行,使用参数-Xcomp可以设置为编译模式:

    C:UsersAdministrator>java -Xcomp -version
    java version "1.7.0_13"
    Java(TM) SE Runtime Environment (build1.7.0_13-b20)
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01,compiled mode)

    一般来说,编译模式的执行效率会远远高于解释模式。更多的示例参考《实战Java虚拟机》一书。

     【示例11-36】下面的代码不停计算圆周率的数值,并给出了运行的耗时: 

    public static double calcPi(){
             doublere=0;
             for(inti=1;i<10000;i++){
                       re+=((i&1)==0?-1:1)*1.0/(2*i-1);
             }
             returnre*4;
    }
    public static void main(String[] args) {
             longb=System.currentTimeMillis();
             for(inti=0;i<10000;i++)
                       calcPi();            
             longe=System.currentTimeMillis();
             System.out.println("spend:"+(e-b)+"ms");
    }

    使用虚拟机参数-Xint运行以上代码,输出:

     spend:2794ms

    使用虚拟机参数-Xcomp运行以上代码,输出:

    spend:1082ms

    很明显,在本例中使用编译运行要比解释运行快大约3倍。

    25612fm立体图

    《实战java虚拟机》一书Q交流群:397196583

  • 相关阅读:
    vue_路由
    vue_列表动画
    vue生命周期详细
    Vue_过渡和动画
    vue_品牌列表案例(添加删除搜索过滤)
    vue_简单的添加删除
    v-if v-show
    vue_简单的添加数据
    JSON.parse()和JSON.stringify()
    vue_计算器
  • 原文地址:https://www.cnblogs.com/love-jishu/p/4462935.html
Copyright © 2011-2022 走看看