jvm是如何加载.class文件的

图片发自App


java虚拟机是有class loader,runtime data area,execution engine 和 native interface组成的

由class loader解析特定格式的.class文件 然后execution engine对其解析 解析完成后就提交到操作系统去执行.

                    JAVA的反射实现


java反射的基本实现


                                        类从编译到执行的过程

编译器将Tset.java文件编译成Test.class字节码文件

ClassLoader将.class字节码文件转化为JVM的Class对象

JVM利用Class对象实例化Tset对象

                                          谈ClassLoader

主要工作在class加载阶段,从系统外部获取Class二进制数据流,所有的class都是由ClassLoader加载的,负责通过将class文件的二进制数据流装载进系统,然后交给java虚拟机进行连接,初始化等操作

                                        ClassLoader的种类

BootStrapClassLoader 加载核心库java.*  由c++编写

ExtClassLoader 加载扩展库javax.*

AppClassLoader 加载程序所在目录

自建ClassLoader

后三者都是由java编写


自己粗略的写一个classLoader


图片发自App

双亲委派机制可以避免相同字节码的加载



classLoader.loadClass和Class.forName的区别

你可能感兴趣的:(jvm是如何加载.class文件的)