Java类加载机制

Java的类加载过程分为三个主要步骤:加载链接初始化

第一阶段是加载,它是Java将字节码数据从不同的数据源读取到JVM中,并映射为JVM认可的数据结构(Class对象)。(加载阶段是用户参与的阶段,我们可以自定义类加载器,去实现自己的类加载过程)

第二阶段是链接,这一步骤是核心,简单的讲就是把原始的类定义信息平滑地转化为JVM运行的过程中。这里可进一步细分为三个步骤:

-验证:这是虚拟机安全的重要保障,JVM需要核验字节信息时符合Jav虚拟机规范的,否则就被认为是VerifyError,这样就防止了恶意信息或者不合规的信息危害JVM的运行,验证阶段有可能触发更多的class的加载。

-准备:创建类或接口中的静态变量,并初始化静态变量的初始值。

-解析:在这一步会将常量池中的符号引用替换为直接引用。

第三阶段是初始化,这一步真正去执行类初始化的代码逻辑,包括静态字段复制的动作,以及执行类定义中的静态初始化代块内的逻辑,编译器在编译阶段就会把这部分逻辑整理好,父类型的初始化逻辑优先于当前类型的逻辑。

双亲委派模型:简单的说就是当类加载器试图加载某个类型的时候,除非父加载器找不到相应类型,否则尽量将这个任务***给当前加载器的父加载器去做。使用委派模型的目的是避免重复加载Java类型。

全部评论

相关推荐

10-20 16:50
门头沟学院 Java
强大的马里奥:考研报名还没结束,建议考个中游211,这样会好找一些
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务