JVM-直接内存和执行引擎

笔记均来自于尚硅谷官方视频,为了本人复习使用,无其他目的
尚硅谷官方视频

一、直接内存

1.不是虛拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的
内存区域。
2.直接内存是在Java堆外的、直接向系统申请的内存区间
来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存,
3.访问直接内存的速度会优于Java堆。即读写性能高,适用于读写频繁以及大文件的场合。Java的NIO库(非阻塞)允许Java程序使用直接内存
在这里插入图片描述
在这里插入图片描述

4.由于直接内存在Java堆外,因此它的大小不会直接受限于-Xmx指定的最大
堆大小,但是系统内存是有限的,Java堆和直接内存的总和依然受限于操
作系统能给出的最大内存

二、执行引擎

1.执行引擎概述

(1)执行引擎是Java虛拟机核心的组成部分之一。

(2)JVM的主要任务是java程序编译后的字节码文件加载到内存中让其解释执行,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字节码指令、符号表,以及其他辅助信息。那么,如果想要让一个Java程序运行起来,执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。简单来说,JVM中的执行引擎充当了将高级语言翻译为机器语言的译者。

(3)字节码文件被执行引擎翻译成操作系统能识别的机器指令
在这里插入图片描述

2.执行引擎的工作过程

执行引擎从pc寄存器中取字节码指令的地址,用于局部变量表和操作数栈的执行
在这里插入图片描述

3.java代码编译和执行的过程

javac编译源程序属于前端编译,而JVM需要后端编译器,即执行引擎将字节码指令编译成机器指令

在这里插入图片描述
Java字节码的执行是由JVM执行引擎来完成的
在这里插入图片描述
4.解释器和JIT(及时)编译器

(1)解释与翻译的概念
解释是将字节码指令转换为机器指令并直接执行,执行完不保存,一行一行解释执行,包括了解析后的执行过程;
翻泽是也是将字节码翻译为机器指令,但是不立即执行,会保存下来,最终一块执行

在这里插入图片描述

(2)HotSpotVM是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。在Java虚拟机运行时,解释器和即时编译器能够相互协作,各自取长补短当程序启动后,解释器可以马上发挥作用,省去编译的时间,立即执行编译器要想发挥作用,把代码编译成本地代码,需要一定的执行时间。 但编译为本地代码后,执行效率高。

(3)编译期
在这里插入图片描述

三、机器码、汇编语言、高级语言

1.机器码、汇编语言、高级语言概括

机器码

也叫机器指令:二进制编码方式的指令
在这里插入图片描述

汇编语言

在这里插入图片描述
高级语言
在这里插入图片描述
2.机器码、汇编语言、高级语言三者关系

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值