您现在的位置是:主页 > news > 做网站讯息/精准网络营销推广
做网站讯息/精准网络营销推广
admin2025/5/29 19:44:29【news】
简介做网站讯息,精准网络营销推广,杂志社网站模板,网站个人简介怎么做1 类加载过程 图1 类加载过程2 过程描述 加载 通过一个类的全限定名获取定义该类的二进制字节流(*.class文件),将二进制字节流(字节码和常量池)转化为方法区的运行时数据局结构,在内存中生成一个java.lang…
做网站讯息,精准网络营销推广,杂志社网站模板,网站个人简介怎么做1 类加载过程 图1 类加载过程2 过程描述
加载 通过一个类的全限定名获取定义该类的二进制字节流(*.class文件),将二进制字节流(字节码和常量池)转化为方法区的运行时数据局结构,在内存中生成一个java.lang…图1 类加载过程
1 类加载过程
2 过程描述
- 加载
通过一个类的全限定名获取定义该类的二进制字节流(*.class文件),将二进制字节流(字节码和常量池)转化为方法区的运行时数据局结构,在内存中生成一个java.lang.Class对象。 - 验证
确保*.class文件文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全,使用纯粹的Java代码无法做到如访问数组边界以外的数据,将一个对象转型为未实现的类型、跳转到不存在的代码之类的情况,如果有异常,将无法编译成功。 - 准备
为类变量分配内存并设置类变量的初始值,这些变量使用的内存都将在方法区中进行分配,此时进行内存分配的仅包括类变量(static修饰的变量),不是实例变量,实例变量会在对象实例化时随着对象一起分配在Java堆中。 - 解析
虚拟机常量池的符号引用替换为字节(直接)引用。符号引用是以一组符号来描述所引用的目标,可以是任何形式的字面量,只要可以无歧义定位到目标即可;字节引用(直接)引用是可以指向目标的指针、相对偏移量或者一个可以直接或间接定位到目标的句柄,和虚拟机的内存有关,不同的虚拟机直接引用一般不同。 - 初始化
初始化是类加载的最后一步,这个阶段,Java程序才开始真正执行,初始化阶段,开发者可以根据需要赋值,即执行类构造器()方法的过程。初始化阶段,主要为静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化,Java中对类变量初始化有两种方式:声明类变量时指定初始值,使用静态代码块为类变量指定初始值。
JVM初始化过程: - 若类没有被加载和连接,程序先连接并加载该类
- 若该类的直接父类还没有被初始化,则先初始化其直接父类
- 若类中有初始化语句,则系统依次执行初始化语句
类初始化时机:
主动使用类: - new
- 调用类的静态成员(除final常量)和静态方法
- 使用java.lang.reflect报的方法对类进行反射调用
- 当虚拟机启动,先启动main方法所在的类
- 初始化某个类的子类,其父类也被初始化
被动使用类: - 访问静态域时,只有真正声明这个域的类才会被初始化,通过类引用父类的静态变量,不会导致子类初始化
- 通过数组定义类的引用,不会触发该类的初始化
- 引用常量不会触发此类初始化(常量在编译阶段就存入调用类的常量池中)