当前位置: 首页 > 面试题库 >

Java虚拟机的字节序

孙宏壮
2023-03-14
问题内容

Java在其虚拟机中使用什么字节序?我记得在某处读过文章,它取决于它所运行的物理机器,然后在其他地方,我读到,我相信它始终是大字节序。哪个是正确的?


问题答案:

class文件中的多字节数据以大端存储。

摘自Java虚拟机规范Java SE
7版
,第4章:class文件格式:

一个类文件由8位字节的流组成。通过分别读取两个,四个和八个连续的8位字节来构造所有16位,32位和64位量。多字节数据项始终以高字节顺序存储,高字节在前。

此外,如果字节码指令中的操作数跨越多个字节,则它也是big-endian。

从Java虚拟机规范的Java SE
7版
,第2.11节:指令集摘要:

如果操作数的大小超过一个字节,则将其首先存储在big-endian顺序-high-
order字节中。例如,局部变量中的无符号16位索引存储为两个无符号字节,byte1并且byte2,使得其值为(byte1 << 8) | byte2

所以是的,我认为可以说Java虚拟机使用big-endian。



 类似资料:
  • 虽然AST可以直接解释执行,实现也不复杂,但大部分语言,比如java,python,ruby(1.9版本之后)使用虚拟机解释字节码执行。字节码和AST的执行有很强的一致性,但字节码执行机制可以实现一些更细粒度的控制 这里的虚拟机是指执行一种低级语言字节码的虚拟机,这个限定可能强了些,比方说,前面说的一个AST解释器,也可以看做是一种虚拟机,因为理论上是可以有一个机器解释AST执行,但这里我们说的虚

  • 一、运行时数据区域 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 二、垃圾收集 判断一个对象是否可被回收 引用类型 垃圾收集算法 垃圾收集器 三、内存分配与回收策略 Minor GC 和 Full GC 内存分配策略 Full GC 的触发条件 四、类加载机制 类的生命周期 类加载过程 类初始化时机 类与类加载器 类加载器分类 双亲委派模型 自定义类加载器实现 参

  • 一、前言 本部分内容是关于Java虚拟机的一些面试高频知识点的总结。说到对Java虚拟机的学习,就不得不提下这本书《深入理解Java虚拟机》。 本部分的内容也是基于这本书进行整理的,这本书基本是面试必备。 关于Java虚拟机,重点考察以下三个方面的内容: 内存区域/内存模型 类加载机制 垃圾收集算法/收集器 二、目录 对象的创建、内存布局和访问定位 Java内存区域与内存模型 Java类加载机制及

  • 我正在读“Java虚拟机规范第7版”,有一些东西真的让我困惑,下面是问题: 在这种情况下,使用当前帧(§2.6)恢复调用器的状态,包括其局部变量和操作数堆栈,调用器的程序计数器适当增加以跳过方法调用指令。然后在调用方法的帧中正常地继续执行,返回的值(如果有的话)推送到该帧的操作数堆栈上。 那么“跳过方法调用指令”是什么意思呢?有人能解释一下吗?非常感谢!

  • 查看虚拟机相关的监控告警信息。 监控菜单下的虚拟机页面主要用于查看虚拟机相关的监控告警信息。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “监控/资源/虚拟机” 菜单项,进入虚拟机页面。 查看虚拟机列表 该功能用于查看虚拟机的监控告信息。 在虚拟机页面,支持查看以下信息: 名称:虚拟机的名称。 IP:虚拟机的IP地址。 监控状态:虚拟机是否设置告警以及发生告警。 状态:虚拟机的当

  • 主机回收站用于存放用户删除的虚拟机和裸金属文件。 主机回收站用于存放用户删除的虚拟机和裸金属文件。回收站中主机文件默认保存3天,如有误删除的主机需要在3天内进行恢复操作,可以将其恢复到原来位置,超过3天后,文件将被彻底删除。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “主机/回收站/主机” 菜单项,进入主机回收站列表。 清除 当确定回收站中的主机无用后,可使用清除功能立即彻底删