连接模型

8.1 动态连接和解析

    class文件会把所有引用放在一个地方--常量池

   运行时常量池分配在方法区,属于方法区一部分

 

概念: 静态常量池(static constant pool)和动态常量池(dynamic constant pool)

动态链接:

解析:

 

8.1.1

  Class.forName()和ClassLoader.loadClass()区别:最大区别可能类型装载器不同

 

 1. 初始化用forName()

 2.如果需要一个特定的装载类型,比如从网路上装载、从数据库装载、从加密文件装载 用户就需要定制自己的类装载器了

   还有一点就是安全方面考虑 命名空间和保护域

 

8.1.4 解析CONSTANT_class_info入口

 

  1.在所有常量池入口类型中 CONSTANT_class_info解析起来最复杂

步骤一

   2.装载类型或者任何超类行

   3.检查访问权限

步骤二

连接并初始化类型和任何超类

 

 校验类型

 准备类型

 可选解析类型

 

 初始化类型

 

定义类装载器

初始化类装载器

装载约束,一个java类型在编译时是唯一的,但是在运行期,不同类装载器可以装载同一个类型

 

 

你可能感兴趣的:(连接模型)