JAVA类加载,对象

来源:互联网 发布:自学软件测试书籍 2016 编辑:程序博客网 时间:2024/05/21 09:20

JAVA虚拟机加载CLASS文件。但是虚拟机不会去管CLASS文件是从来而来的,可以是java编译,也可以是16进制编译出来。CLASS文件即是一组以8位字节为基础单位的二进制流。每一位有严格的规范。格式如下:

版本号:用以身份识别。0xCAFEBABE

常量池:字符串常量等

访问标识:public...

类索引: 继承自哪里

成员变量

方法


类加载过程:

1.加载内存,按上述格式并生成一个java.lang.class对象

2.数据校验,虚拟机自检,class文件有多重来源。

3.准备,static变量分配内存并初始化为0

4.转换解析

5.初始化


类加载器:

      双亲委派式,为了避免重复加载。

      层次结构,由下往上委派,如果父加载器没找到,子加载器再遍历自己的目录。


对象:

     对象头,存储自身运行数据,哈希码等,类型指针,确定哪个实例。

     实例数据,对象存储有效信息

     对齐填充,起始8字节整数倍,补充填齐。


创建对象:

     new->常量池中类符号引用,检查是否加载->分配内存



0 0