程序开发

Java 知识小集 第 3 期

2017-10-15  本文已影响5人  Zentopia

1. 什么是 Java 类加载器

首先类加载器是一个对象,是 java.lang.ClassLoader 类的实例。类加载器用于将 Java 类加载到 JVM 中。它会根据类的名称,找到或者生成对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 JVM 中的 java.lang.Class 类的一个实例 。类加载器使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器最初是为了满足 Java Applet 远程下载 Java 类文件到浏览器中执行而开发出来的。

2. 虚拟机的类加载机制

虚拟机把类的元数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。

3. Java 动态特性的基础

在 Java 中类型的加载、连接和初始化过程都是在程序运行期完成的。
应用:

4. Java 字节码的存在形式

Java 字节码可以以类文件的形式存在于磁盘上(.class),也可以通过网络的方式下载,或只存在于内存中。

5. Java 字节代码和类在 JVM 中的表现形式

在 JVM 中,Java 字节代码的表现形式是字节数组(byte[]),Java 类的表现形式是 java.lang.Class 类的对象。

6. 类的生命周期

一般情况下:
加载 -> 验证 -> 准备-> 解析 -> 初始化 -> 使用 -> 卸载
其中,验证、准备和解析属于连接。
解析阶段可以在初始化结束后开始,为了支持 Java 语言的运行时绑定。

7. Java 对象生成的过程

Java 源程序(.java 文件)在经过 Java 编译器编译之后被转换为 Java 字节代码(.class 文件)。类加载器读取 Java 字节代码并转换为 java.lang.Class 类的一个实例。每个这样的实例就是一个 Java 类。调用实例的 newInstance() 方法就可以创建出该类的一个对象。

8. Java 类加载器的类别

9. 类加载器的继承关系

除了引导类加载器,所有的类加载器都有父类加载器。
箭头方向为父类方向:
用户自定义的类加载器 -> 系统类加载器 -> 扩展类加载器 -> 引导类加载器

10. JVM 如何判断两个类是否相同

首先判断类名是否相同,然后判断加载该类的类加载器是否相同。

上一篇 下一篇

猜你喜欢

热点阅读