java中的类的加载连接初始化

Posted 梦中云茵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的类的加载连接初始化相关的知识,希望对你有一定的参考价值。

同一类的所有实例的静态变量共享用一块内存区。

但两个jvm之间并不会共享数据。类被加载之后,系统为之生成一个对应的class对象。

1.类的加载

将类的class文件读入内存,并创建class对象。

2.连接

连接的过程分为三步:

(1)验证

被加载的类的内部结构是否正确、协调。

(2)准备

为类变量分配内存并设置默认初始值。

(3)解析

将类的二进制数据中的符号引用替换成直接引用。 

3.初始化

虚拟机负责对类进行初始化,主要对类变量进行初始化。

    1.声明类变量时指定初始值。

     2.使用静态初始化块为类变量。

jvm初始化一个类包含以下几个步骤:

1.如果这个类还没有被加载和连接,则先加载并连接该类。

2假如该类的直接父类还没有被初始化则先初始化其直接父类。

 

 

那么系统在什么时候才会初始化类尼?

当java程序首次通过下面6种方式使用类或者接口时,系统会初始化该类和接口的。

(1)创建类的实例,包括new操作符来创建实例,通过反射来创建,反序列。

(2)调用某个类的类方法(静态方法)

(3)访问某个类或接口的类变量或为该类变量赋值。

注:对于final型的类变量,如果该类变量的值在编译时就可以确定下来。不会导致类的初始化。

 

以上是关于java中的类的加载连接初始化的主要内容,如果未能解决你的问题,请参考以下文章

(二十六)类加载机制和类的加载连接(验证准备解析)和初始化

JVM 1.类的加载连接初始化

类加载器 - 类的加载连接与初始化

2.JVM的类加载器

类装载机制的类的初始化顺序

一文读懂Java类加载机制