【发布时间】:2021-03-30 23:59:06
【问题描述】:
Java 是 Big Endian,它如何在保持性能的同时处理 Little Endian CPU? JVM(OpenJDK、OpenJ9 等)是否进行任何特殊优化以保持性能,例如在 Little Endian 平台的特殊情况下仅选择性地成为 Big Endian?在访问 ByteBuffers 或调用本机代码或写入 IO 或访问 volatile 变量时是否有特殊的字节序处理? Java 如何改变 Little Endian 架构中的字节序?字节序在什么点或操作(加载、存储、计算、寄存器、缓存、内存等)发生变化?这会产生什么样的性能损失?
【问题讨论】:
-
Java 本身没有字节序。类文件具有字节顺序,但这只是一种编码,无论字节顺序如何,都可以很容易地从它们中解码整数;即使对于更深奥的格式也是如此。寄存器中的整数只是存储为该寄存器,类型化数组不允许您将它们转换为字节。
标签: java performance cpu-architecture endianness openj9