Java虚拟机的解释器与编译器选择

Jvm可以运行在解释模式下,编译模式下,与解释编译混合模式下。

解释模式下,由于是在程序运行的时候进行Java代码直接到机器码的翻译,会占用更多的cpu时间。但由于不需要加载class中间文件,所以对内存的占用比较小。-Xint 指定jvm强制运行于解释模式下。

编译模式下,有两个即时编译器jit:client,server。client简称c1编译器,server简称c2编译器。client编译器在jvm启动的时候不会。相对而言,c1是一个轻量级的编译器,不会做过多的编译期优化,引起项目启动快,占用内存少。c2是一个重量级编译期,有大量的编译期优化,因此在项目启动的时候,进行优化,会导致项目启动慢,占用内存少。但是server模式下由于在启动的时候做了优化,运行起来更流畅,效率也更高。-Xcomp 强制jvm使用编译模式。注:如果编译模式失效,解释模式会介入。新版本hotspot取消了comp参数。 指定c1编译期的参数 -client ;指定c2编译期的参数-server

混合模式:默认hotspot虚拟机运行于混合模式下,会根据硬件性能自动选择client或者server模式。一个解释器加一个选择的编译器进行Java代码的编译期处理。

查看jvm运行在那种模式下:java -version 最后有个mode,例如默认 mixed mode

C:\Users\jiao>java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

最后一行,运行胡server模式下的混合模式。说明使用了解释器+即时编译器的模式,而且即时编译器使用了c2编译器

下面分别显示解释模式与编译模式

C:\Users\jiao>java -Xcomp -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, compiled mode)

C:\Users\jiao>java -Xint -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, interpreted mode)


猜你喜欢

转载自blog.csdn.net/jiao_zg/article/details/80215486
今日推荐