`

类加载过程

    博客分类:
  • Java
阅读更多
从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用、卸载共7个阶段。

  加载、验证、准备、初始化和卸载这5个阶段顺序是一定的,类的解析阶段则不一定。

  验证、准备、解析均属于类加载阶段的连接阶段。

  1、类加载的过程
  加载阶段是类加载过程的一个阶段,不要被混淆,在加载阶段需完成:
1)通过一个类的全限定名来获取定义此类的二进制字节流。
2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。

  2、验证
  是连接阶段的第一步,确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。

  3、准备
  正式为类变量分配内存并设置类变量初始化的阶段,这些内存将在方法区进行分配。进行内存分配的仅包含类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化时随着对象一起分配到Java堆中。这里的初始值“通常情况”是数据类型的零值。真正的赋值应该在初始化阶段才会被执行。

  4、解析
  此阶段是虚拟机将常量池中的符号引用替换为直接引用的过程。
  符号引用--转变为-->直接引用。

  5、初始化
  到了这阶段,才真正执行类中定义的Java程序代码(或者说是字节码)。
在准备阶段已经赋过一次系统要求的初始值,而在初始化阶段,则是根据程序员通过程序制定的主观计划去初始化类变量和其他资源。
  初始化阶段是执行类构造器<clint>()方法的过程。
 
  6、使用(略)
 
  7、卸载(略)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics