Java JVM的学习-01

学习Java反射机制的时候,阅读到Class.forName实现中使用ClassLoader进行类加载时有一点疑惑,于是先补一下JVM知识。
参考 bilibili @遇见狂神说 《初探JVM》

一、JVM?

JVM即Java虚拟机, 任何Java程序的运行依赖JVM,JVM有以下特点:
Java虚拟机本质上就是一个程序。
Java语言在不同平台上运行时不需要重新编译。
Java虚拟机有自己完善的硬件架构,如处理器、堆栈等…

二、JVM的体系结构?

JVM主要分为五大模块:类加载器、运行时数据区、执行引擎、本地方法接口和垃圾收集模块。
Java JVM的学习-01

1.类加载器

类加载器主要负责加载.class文件
加载后可以通过new生成不同的实例
不同的实例可以通过getClass()获取到Class
Java JVM的学习-01
ClassLoader可分为4个:

BootstrapClassLoader 启动类加载器/根加载器
ExtClassLoader 扩展类加载器
AppClassLoader 应用程序类加载器
CustomClassLoader 用户自定义类加载器

而这四个加载器就牵涉到Java的一个安全机制:

2.双亲委派机制

当某个类需要加载某个.class文件的时候,它会委托给上一级类加载器,进行递归操作,如果上一级没有执行,自己能够执行,便自己去加载这个类。
Java JVM的学习-01
下接: