Java是面向对象的静态强类型语言,声明并创建对象的代码很常见,根据某个类声明一个引用变量指向被创建的对象,并使用此引用变量操作该对象
在实例化对象的过程中,JVM中发生了什么化学反应呢?...开始到本类路径上的所有属性值都要分配内存
分配完毕之后,进行零值初始化
在分配过程中,注意引用是占据存储空间的,它是一个变量,占用4个字节
这个指令完毕后,将指向实例对象的引用变量压入虛拟机栈顶...● dup : 在栈顶复制该引用变量,这时的栈顶有两个指向堆内实例对象的引用变量
如果方法有参数,还需要把参数压入操作栈中
两个引用变量的目的不同,其中压至底下的引用用于赋值,或者保存到局部变量表...,另一个栈顶的引用变量作为句柄调用相关方法
● invokespecial : 调用对象实例方法,通过栈顶的引用变量调用方法
是类初始化时执行的方法
是对象初始化时执行的方法...的垃圾收集器采用复制算法或标记-整理算法,那么堆中空闲内存是完整的区域,并且空闲内存和已使用内存之间由一个指针标记.