【Java】实战Java虚拟机之五“开启JIT编译”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Java】实战Java虚拟机之五“开启JIT编译”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1618字,纯文字阅读大概需要3分钟。
内容图文
今天开始实战Java虚拟机之五“开启JIT编译”
总计有5个系列
- 实战Java虚拟机之一“堆溢出处理”
- 实战Java虚拟机之二“虚拟机的工作模式”
- 实战Java虚拟机之三“G1的新生代GC”
- 实战Java虚拟机之四“禁用System.gc()”
- 实战Java虚拟机之五“开启JIT编译”
Java虚拟机有3种执行方式,分别是解释执行、混合模式和编译执行,默认情况下处于混合模式中。使用命令行java –version可以查看虚拟机的执行模式:
C:\Users\Administrator>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:\Users\Administrator>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:\Users\Administrator>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; } publicstaticvoid 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倍。
《实战java虚拟机》一书Q交流群:397196583
原文:http://www.cnblogs.com/love-jishu/p/4462935.html
内容总结
以上是互联网集市为您收集整理的【Java】实战Java虚拟机之五“开启JIT编译”全部内容,希望文章能够帮你解决【Java】实战Java虚拟机之五“开启JIT编译”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。