前言

一个java程序到底是如何执行的呢?下面跟着小编一起来看一张图

javacc怎么整合到项目中 javac在哪里_执行引擎


上图就是我们的一个java程序整个的一个执行过程,那其中的编译器,类加载器,内存,执行引擎就是我们JVM中几个非常关键的部位喽,接下来我们跟着小编一起来简单了解一下这几个部分!

编译器

那编译器到底是什么呢?其实编译器有很多种,那我们今天说的就是javac

百度百科解释如下:

javac 是java语言编程编译器。全称java compiler。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件

其实javac的位置在这里,请看下面的图

javacc怎么整合到项目中 javac在哪里_jvm_02


javac位于jdk中,属于tools工具包里面的一部分

内存

java内存区域组成部分

javacc怎么整合到项目中 javac在哪里_java_03


从图中可以看出,内存中分为两大部分,内存公有的和内存私有的,公有的分为:方法区、堆;私有的分为:pc(程序计数器)、虚拟机栈、本地方法栈

类加载

虚拟器把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制
类加载机制大致分为两部分:类加载的时机、类加载的过程

执行引擎

虚拟机的执行引擎是由自己实现的,因此可以自行指定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式
执行引擎大概分为以下几个部分:运行时栈帧结构、方法调用、基于栈的字节码解释执行引擎

总结

上面分析的是小编通过对一个java程序的执行过程来简单介绍其中涉及到的关于JVM的几个核心组件,后续会和大家一起来共同学习组件的具体内容