JVM虚拟机学习笔记01:类的加载、连接、初始化

时间:2021-06-26 19:45:10

类的加载、连接、初始化

加载:查找并加载二进制数据(将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构)

加载.class文件的方式:

   1、从本地文件系统中直接加载

   2、通过网络下载.class文件

   3、从zip、jar等归档文件中加载.class文件

   4、从专有数据库中提取.class文件

   5、将Java源文件动态编译为.class文件

连接:1、验证:二进制数据是否完整、安全

      2、准备:静态变量分配内存,并初始化为默认值

      3、解析:符号引用转换为直接引用

初始化:为类的静态化变量赋予正确的初始值

类的主动使用和被动使用

主动使用:

   1、创建了该类的实例

   2、对某个类的静态变量进行了读/取操作

   3、调用某类的静态方法

   4、反射API,如Class.forName("com.js.Test")

   5、初始化某个类的子类

   6、JVM启动时标明的启动类,如:java com.js.Test

所有的JVM实现必须在某个类或借口被Java程序“首次主动使用”时才初始化他们(也就是只执行加载和连接,不执行初始化操作)

被动使用:其他情况皆属于被动使用。