java new 对象的过程
2021-03-26 19:21:16 0 举报
java new 对象的过程
作者其他创作
大纲/内容
加载
只允许对后边的静态变量进行赋值,不能对其访问
准备
开始为静态变量分配内存和初始值(零值)
解析
根据类名到常量池中定位一个类的引用符号
每个类在JVM中只有一个class对象
将分配的内存初始化为零值(不包括对象头)
虚拟机为对象分配内存(位于堆中)
调用对象的<init>方法
符号引用:类和接口的完全限定名(Fully Qualified Name)、字段的名称和描述符(Descriptor)、方法的名称和描述符。
在常量池中找到类、接口、方法字段的符号引用,并将其替换成直接引用的过程。
对象所需内存的大小在类加载完成之后便可完全确定。
初始化
<init>方法还没有执行所有的方法都是零值,<init>方法执行后会将对象按照程序员的意愿进行初始化
类的加载过程就是讲class文件中的二进制数据读取到内存中
new 类名
当初始化一个类时,如果父类没有进行初始化,需要先初始化父类。
如果没有找到这个符号引用,说明类还没有被加载,则进行类的加载、解析和初始化
验证
执行<clinit>方法,此方法中包含了静态变量的赋值以及静态代码块的执行。
检验class文件的字节流所包含的内容是否符合JVM的规范
0 条评论
下一页