logo资料库

Java类加载机制与反射-PPT.pptx

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
目录 CONTENTS 前言 类的加载 类的初始化 Java反射
(一)前言 每个开发人员对Java.lang.ClassNotFoundExcetpion这个异常肯定都 不陌生,这背后就涉及到了java技术体系中的类加载。 Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发 人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程 序中出现的类加载失败等技术问题。 对理解java虚拟机的连接模型和java语言的动态性都有很大帮助。
(二)类的加载 类加载指将类的class文件读入内存,并为之创建一个 java.lang.Class对象。 类也是一种对象。 类的加载由类加载器完成 加载类的来源: 本地文件系统加载class文件 从jar包加载class文件 通过网络加载class文件 把一个JAVA源文件动态编译,并执行加载类
(二)类的加载 Ø 加载 Ø 连接 Ø 初始化
(二)类的连接 连接负责把类的二进制数据合并到JRE中,分为下面三个阶段: Ø 验证:检验被加载的类是否有正确的内部结构,并和其他类协调一致 Ø 准备:为类的类变量分配内存,并设置默认初始值 Ø 解析:将类的二进制数据中的符号引用替换为直接引用。
(三)类的初始化 JAVA虚拟机负责对类进行初始化,主要是对类变量进行初始化 Ø 声明类变量时指定初始值, Ø 使用静态初始化块
(三)类的初始化步骤 Ø 1. 如果类没有被加载和连接,先加载并连接类 Ø 2. 如果父类没有被初始化,先初始化其直接父类 Ø 3. 类中有初始化语句,则系统依次执行初始化语句 如果2中父类还有直接父类,则重复执行这三个步骤。。。 所以,JVM最先初始化的类是 java.lang.Object 类
分享到:
收藏