java虚拟机是有class loader,runtime data area,execution engine 和 native interface组成的
由class loader解析特定格式的.class文件 然后execution engine对其解析 解析完成后就提交到操作系统去执行.
JAVA的反射实现
类从编译到执行的过程
编译器将Tset.java文件编译成Test.class字节码文件
ClassLoader将.class字节码文件转化为JVM的Class<Test>对象
JVM利用Class<Test>对象实例化Tset对象
谈ClassLoader
主要工作在class加载阶段,从系统外部获取Class二进制数据流,所有的class都是由ClassLoader加载的,负责通过将class文件的二进制数据流装载进系统,然后交给java虚拟机进行连接,初始化等操作
ClassLoader的种类
BootStrapClassLoader 加载核心库java.* 由c++编写
ExtClassLoader 加载扩展库javax.*
AppClassLoader 加载程序所在目录
自建ClassLoader
后三者都是由java编写
双亲委派机制可以避免相同字节码的加载