JVM-3 对象创建与执行引擎

对象的实例化、内存布局

在这里插入图片描述

对象创建的方式

  • new
  • Class 的newInstance() :反射的方式
  • Constructor 的newInstance(Xxxx) :反射的方式
  • clone():不调用构造器,但是要实现Cloneable()接口
  • 使用返序列化:
  • 第三方库

对象创建的步骤

1、判断对象对应的类是否加载、链接、初始化

2、为对象分配内存,

3、处理并发安全问题

4、初始化分配到空间

5、设置对象的对象头

6、执行init()方法进行初始化

对象的内存布局

在这里插入图片描述
在这里插入图片描述

对象的访问引用

思考:JVM是如何通过栈帧中的对象引用访问到其内部的实例对象呢

答:对象引用指向堆区,堆区内部的类型指针指向方法区内部的对象

执行引擎

任务是将字节码指令解释、编译为对应平台上的本地机器指令。

在这里插入图片描述

执行引擎执行PC寄存器指向操作数栈中的指令。pc寄存器指向哪,执行引擎就在哪执行。

执行引擎运行有两种方式运行代码。

解释器

将字节码文件中的内容翻译成对应的本地平台机器指令。

效率低下

即时编译器(JIT)

将整个函数体编译成为机器码,每次函数执行时,只执行编译后的机器码即可。

速度快

为什么即时编译器执行速度快为什么还保留解释器呢?

程序运行后,解释器可以立马发挥作用,省去编译时间,立即执行。响应速度快

而JIT编译器需要将代码编译成本地机器指令。执行速度快

于是:在程序开始运行后,由解释器执行代码,提高响应速度。运行一段时间后,通过热点代码探测。将热点代码通过即时编译器解释成本地代码运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值