前言
一个java程序到底是如何执行的呢?下面跟着小编一起来看一张图
上图就是我们的一个java程序整个的一个执行过程,那其中的编译器,类加载器,内存,执行引擎就是我们JVM中几个非常关键的部位喽,接下来我们跟着小编一起来简单了解一下这几个部分!
编译器
那编译器到底是什么呢?其实编译器有很多种,那我们今天说的就是javac
百度百科解释如下:
javac 是java语言编程编译器。全称java compiler。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件
其实javac的位置在这里,请看下面的图
javac位于jdk中,属于tools工具包里面的一部分
内存
java内存区域组成部分
从图中可以看出,内存中分为两大部分,内存公有的和内存私有的,公有的分为:方法区、堆;私有的分为:pc(程序计数器)、虚拟机栈、本地方法栈
类加载
虚拟器把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制
类加载机制大致分为两部分:类加载的时机、类加载的过程
执行引擎
虚拟机的执行引擎是由自己实现的,因此可以自行指定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式
执行引擎大概分为以下几个部分:运行时栈帧结构、方法调用、基于栈的字节码解释执行引擎
总结
上面分析的是小编通过对一个java程序的执行过程来简单介绍其中涉及到的关于JVM的几个核心组件,后续会和大家一起来共同学习组件的具体内容