初识JVM
1.什么是JVM?
JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。
JVM本质上是一个运行在计算机上的程序,他的负责运行Java编译后生成的Java字节码文件,将这些字节码文件转换成计算机能识别的机器码
JVM的功能:
- 解释和运行
- 对字节码文件中的指令,实时的解释成机器码,让计算机能够直接执行
- 内存管理
- 自动为对象、方法等分配内存
- 自动的垃圾回收机制,回收不再使用的对象
- 即时编译
- 对热点代码进行优化,提升执行效率
2.即时编译
Java语言如果不做任何优化,性能是远远不如C/C++的。因为Java代码再编译后生成的class文件是不能直接让计算机运行的,还需要让JVM将字节码装换成对应的机器码,而C/C++是直接通过编译和链接将源代码转换为机器码。所以Java的性能是不如C/C++的。
Java语言需要进行实时的解释字节码,主要是因为夸平台的特性,让同一个字节码通过不同的JVM在不同的操作系统上运行。
而通过JVM即时编译这个功能就能在一定程度上提供代码的性能。即时编译的原理就是:
JVM在解释字节码的时候,发现有一段代码在短时间内别多次调用,他就会认为这一段代码是热点代码,就会这一段代码进行解释并优化,把这段热点字节码转换成机器码后,将其存放到内存中。后续程序直接从内存中调用就可以了,而不用JVM再进行解释后再调用。这就是即时编译优化。
3. JVM的组成
- 类加载器:加载
.class
字节码文件中的内容到内存中 - 运行时数据区域:负责管理JVM使用到的内存,比如创建对象和销毁对象
- 执行引擎:将字节码文件中的指令解释成机器码,同时用即时编译器优化性能
- 本地接口:调用JVM内部实现的native方法,也是C/C++实现的方法