a class's lifetime

       


一、Load:装入类有关信息存入method area(finding and importing the binary data for a type)

       1、常量池(the constant pool for the type)

            1》按照类中使用常量的顺序存放常量信息(如string,integer,常量)
            2》类、成员、方法 的symbolic references 。

          *如果别的类使用此类的常量,哪么就复制一份,放入自己的常量池中。

           类常量,类变量,都存入method area。

      2、类成员(field)信息

           成员名字,类型,修饰(public,private...)        

      3、方法信息:1》名字,返回类型(or void),参数的类型和个数,方法的(public,private...)
                           2》方法的字节码,操作堆栈的大小,本地变量区。

     4、类变量Class Variables(类级别)
         所有对象共享,当对象没建立(new)时也可以用,
         存入方法区中,属于类数据,类数据使用之前,必须从method area 分配内存。

    5、A reference of class Class:通过reference 和 类对象连接,就可以取类运行时method area 存贮的信息。

         类对象:java.lang.Class 建立(new)每个装入的内存的.class文件 对象,变成Class的对象。

        1>Class p=Class.forName("ftypeinfo.toys.Person");//得到一个类 reference 

        2>Person p1= new Person();

           Class p=p1.getClass();://java.lang.Object 有 getClass 方法。

二、Link

      1、Prepare:为类变量分配内存,初始化内存默认值( allocating memory for class variables and initializing the memory to default values)

      2、Resolve:

          

三、initialize:初始化类变量值(invoking Java code that initializes class variables to their proper starting values.)

            主要两步:

             1、初始化父类(如果有且父类未初始化)。

             2、执行类的类初始化方法(初始化类变量和static块)

           类初始化方法(<clinit ()):就是由编译器把类里面的类变量初始化和static 初始化统一放入一个<clinit 方法里

         


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值