JVM基础
java从编码到执行
x.java经过javac编译好之后变成x.class文件,x.class然后被加载到内存,与此同时常用的一些java类库【String,Object】也被加载到内存。 然后调用字节码解释器或者JIT即时编译器来进行解释或编译,再交由执行引擎去执行。
java是解释执行的还是编译执行的?
其实解释和即时编译是可以混合的,特别常用的代码,会被JIT编译器编译成一个本地的文件,类似于C语言在windows中执行时编译成exe文件。下次再执行这段代码的时候就不需要通过解释器去一句一句地解释来执行了。可以通过执行引擎直接交给操作系统去执行,效率高了很多。 也不能所有的代码都被JIT去即时编译的,如果这样的话,整个java就完全变成不能跨平台了。
从跨平台的语言到跨语言的平台
java是个跨平台的语言
jvm是一个跨语言的平台,它帮我们屏蔽了不同操作系统底层的实现
jvm与java无关,任何语言,只要能翻译成.class文件格式,就可以在jvm上面运行
常见的JVM实现
C:\Users\Administrator>java -version
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
mixed mode: 解释器和JIT混合使用的