【详解】JVM中,编译器和解释器的作用和区别

一、前言

     随着互联网的发展,现在虚拟机地表最稳定,最强的默认是Hotspot虚拟机。先查看下:

查看方式:cmd进行黑框框,然后输入:java -version

会出现以下参数:

java version:当前java语言运行的JDK版本好

Java(TM) SE Runtime Environment (build 1.8.0_261-b12):java运行环境

之前的JVM包含了两种JVM的实现,一种是客户端的,一种是服务端的。现在已经把Client VM忽略掉了

java HotSpot Server VM:java虚拟机,是服务器端的,是服务器环境中最大程序化的执行速度而设计。

java HotSpot Client VM:客户端的虚拟机,在客户端环境中减少启动时间而设计。

mix mode:表示混合模式,编译器和解释器都有

二、编译器和解释器之间的区别

Java编译器:将Java源文件,也就是.java文件编译成字节码.class文件(二进制字节码文件),java.exe可以简单的看成是Java编译器。

扫描二维码关注公众号,回复: 12794709 查看本文章

Java解释器:就是把java虚拟机上运行的.class字节码解释成机器指令,让CPU识别运行。即jdk和jre中bin目录下的java.exe文件。Java解释器用来解释执行Java编译器编译后的.class文件。java.exe可以简单的看成Java的解释器。

简单的说:Java解释器是执行Java编译器编译后的程序。Java编程人员在编写完代码后,通过Java编译器将源代码编译成JVM字节代码。任何一台机器主要配备了Java解释器,就可以运行这个程序。Java的解释器只是一个基于虚拟机JVM平台的程序。解释器像是一个中间人,编译器已经把程序文件打包好,解释器只需要在JVM环境下执行就可以了,期间不需要依赖任何的编译器

       当程序需要首次启动和执行的时候,解释器可以首次发挥作用,一行一行代码的直接转义执行,但是效率低下。当多次调用方法或者循环体的时候,JIT(即时编译器)就可以发挥作用,把越来越多的代码编译成本地机器码,之后可以获得更高的效率。

       JIT是即时编译器 – 在执行本机之前,将给定的字节码指令序列编译为运行时的机器码。以方法为单位,一次性的将整个方法的字节码编译成本地机器码,机器码供CPU运行。它的主要目的是在性能上做大量的优化。

       JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程

       JVM是一种能够运行Java字节码(Java bytecode)的虚拟机。

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/114978448