Java:直接 IntBuffer 的大小限制?

标签 java bytebuffer addressing

我想在 Java 中分配一个直接 IntBuffer,比如说 10 亿个元素(64 位系统)。我知道的唯一方法是创建一个直接 ByteBuffer 并将其视为直接 IntBuffer。但是,4*1,000,000,000 超过了 Integer.MAX_VALUE,所以我的问题是:如何实现我的目标?

int numInts = 1_000_000_000;
IntBuffer i = IntBuffer.allocate(numInts); // works!

ByteBuffer bb = ByteBuffer.allocateDirect(4*numInts); // does NOT work: integer overflow
IntBuffer ib = bb.asIntBuffer();
System.out.println("This will never be printed");

提前非常感谢,

马库斯

最佳答案

也许您可以尝试创建一个基于 BigInteger 的缓冲区。有些人在 Github 上创建了一个“BigIntbuffer”类,它可以给你带来启发: See here

关于Java:直接 IntBuffer 的大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32990530/

相关文章:

java - 在JDBC中运行教程示例时出错:UnsupportedClassVersionError

java - 如何使用 Hibernate HQL 或 Criteria 内部连接两个表?

x86 - 什么存储器用于存储复位向量?

memory - 如果 SNES 有 128k 内存并且在汇编中,您可以引用 $FF :FFFF addresses, 这是如何工作的?

Java SSH MySQL 连接

javax.validation 2.0.1 List<Object> 在 spring boot 中不起作用

android - OpenGL ES 安卓混淆

java - 将 ByteBuffer 传递给 jni,以便 C 代码在其内存地址中执行写操作

computer-architecture - 寻址模式中偏移量和索引之间的区别?