您现在的位置是:主页 > news > 做网站讯息/精准网络营销推广

做网站讯息/精准网络营销推广

admin2025/5/29 19:44:29news

简介做网站讯息,精准网络营销推广,杂志社网站模板,网站个人简介怎么做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方法所在的类
  • 初始化某个类的子类,其父类也被初始化
    被动使用类:
  • 访问静态域时,只有真正声明这个域的类才会被初始化,通过类引用父类的静态变量,不会导致子类初始化
  • 通过数组定义类的引用,不会触发该类的初始化
  • 引用常量不会触发此类初始化(常量在编译阶段就存入调用类的常量池中)