• <thead id="r5ngm"><option id="r5ngm"></option></thead>

      1. <code id="r5ngm"><menu id="r5ngm"><sub id="r5ngm"></sub></menu></code><code id="r5ngm"></code>
        <strike id="r5ngm"></strike>
      2. <center id="r5ngm"></center><del id="r5ngm"><em id="r5ngm"></em></del>

        <th id="r5ngm"><option id="r5ngm"></option></th><code id="r5ngm"><menu id="r5ngm"><optgroup id="r5ngm"></optgroup></menu></code>
      3. Java里类的生命周期


        在Java中类是有生命周期的,那么一个类的生命周期什么样,有多久?接下来小编就与大家共同了解一下类的生命周期。Java源文件编译成的class字节码文件,在Java虚拟机中运行,Java类的生命周期就是指一个class文件从加载到卸载的全过程。

         

        图片1.png

         

        1.加载:找到需要加载的类并把类的信息加载到jvm的方法区中,然后在堆区中实例化一个Java.lang.Class对象,作为方法区中这个类的信息的入口。Ps:日常我们说的类加载——指的是类的生命周期中加载、连接、初始化三个阶段。

         

        2.连接:连接阶段比较复杂,一般会跟加载阶段和初始化阶段交叉进行,这个阶段的主要任务就是做一些加载后的验证工作以及一些初始化前的准备工作。

         

        3.类的初始化:按照顺序自上而下运行类的变量赋值语句和静态语句。而没有static修饰的赋值语句和执行语句在实例化对象的时候才会运行。

        所以,Java的静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。非静态变量叫做实例变量,它开始于类的实例的创建,结束语类的实例的消亡。

         

        4.使用:当初始化完成之后,Java虚拟机就可以执行Class的业务逻辑指令,通过堆中Java.lang.Class对象的入口地址,调用方法区的方法逻辑,最后将方法的运算结果通过方法返回地址存放到方法区或堆中。

        类的使用包括主动引用和被动引用。主动引用会引起类的初始化eg:通过new关键字实例化对象、读取或设置类的静态变量。被动引用不会引起类的初始化eg:定义类数组、引用类的常量。

         

        5.卸载:当对象不再被使用时,Java虚拟机的垃圾收集器将会回收堆中的对象,方法区中不再被使用的Class也要被卸载,否则方法区(Sun HotSpot永久代)会内存溢出。类的卸载过程其实就是在方法区中清空类信息。

         

        更多资讯尽在动力节点官方网站,关注《动力节点Java学院》微信平台,获取最新Java知识


        上一篇:动力节点老师最低年薪30万?
        下一篇:Java面向对象的概念及三大特性

        开班信息

        98彩票登录|官网_首页