JVM由类加载器、运行时数据区、执行引擎、本地方法接口、垃圾回收系统五部分组成。
一、类加载器
用来将二进制.class文件加载到内存中,经过加载、链接(校验、准备、解析)、初始化,并在内存中创建一个class类对象,保存着该类在内存中的数据结构。(注意这个class类对象和堆内存中new出来的实例不是一个东西,这个class类对象只有一个,jvm并没有规定这个class类对象在内存中的位置,hotspot虚拟机讲这个class类对象放在方法区,作为程序访问方法区这个类的各种数据的访问入口)
1.1 加载
将符合jvm规范的二进制字节流加载到内存;用于后面的连接和初始化。
加载主要完成三件事:
1)通过全限定名来获取定义此类的二进制字节流
2)建这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构
3)在雷村中生成一个java.lang.Class对象,作为程序访问方法区这个类的各种数据的访问入口
二进制字节流的来源:
1)本地的.class文件
2)通过网络获取的.class文件
3)在运行期间有jvm生成的字节码(动态代理)
4)从zip包中读取,比如jar,zip,war等
5)从数据库中读取
6)有其他文件生成,比如有jsp文件生成class类。
1.2 连接
1.2.1 校验