一、Java从编码到执行
首先我们来看一下Java是如何从编码到执行的呢? 我们有一个x.java文件通过执行javac命令可以变成x.class文件,当我们调用Java命令的时候class文件会被装载到内存中,这个过程叫做classloader。一般情况下我们自己写代码的时候会用到Java的类库,所以在加载的时候也会把Java类库相关的类也加载到内存中。装载完成之后会调用字节码解释器和JIT即时编译器来进行解释和编译,编译完之后由执行引擎开始执行,执行引擎下面对应的就是操作系统硬件了。下图是大体的流程:
二、详解class文件的加载过程
接下来主要讲的是一个class文件是怎么从硬盘上到内存中,并开始执行的。
类加载主要有三个过程:loading 、linking 、initializing;其中linking又分为三个步骤:verification 、preparation 、resolution;
1、首先Loading是什么意思呢?是把一个class问价load到内存中去;
2、接下来是Linking分为了三小步:
verification 是用来校验加载进来的class文件是否符合class文件标准,如果不符合直接就会被拒绝了;