JVM的构成
堆,栈,方法区,程序计数器,native区域
线程私有的是 程序计数器和虚拟机栈
程序计数器,记录的是每一个线程执行字节码指令当前所在的位置
虚拟机栈,记录的是每一个线程,执行字节码指令的时候,当前局部变量的指针和方法出口的指针等等
类加载的过程
说了那么多JVM的结构,就不可避免的说到 一个类是怎么被加载进入JVM的了
jvm的加载机制,主要有加载,验证,准备,解析,初始化5个阶段
类加载器
常见的类加载器,主要有
Bootstrap classLoader:这里主要指的是,java安装后lib包下的核心类库
Extension classLoader:这里主要指的是,java安装后lib包下ext包下的扩展类库
Application classLoader: 这里主要指的是,加载自己写的代码
自定义类加载器: 这里主要是根据你的需求自定义加载
由于这些类加载器遵循双亲委派原则,当需要去加载一个类的时候,先从低到高一级一级的向上去找,如果父加载器能加载就让父加载器去找,父加载器不能加载,再让子加载器去加载