是否有比 BigInteger 更大的变量类型?

Is there a variable type bigger than BigInteger?

我目前正在完成一个项目,遇到了一个问题。我正在编写的程序需要大数字,大于 int 可以容纳的数字。所以,我用了Math.BigInteger。将多个 BigIntegers 相加后,出现了 OutofMemory 错误。我假设这意味着数据类型不够大。是否有更大的数据类型,如果没有,我该如何解决这个问题?

错误发生是因为 JVM 运行 超出堆 space。您可以尝试使用

增加堆大小
java -Xmx256m MyClass.java

Xmx- Max Heap Size

如果您将代码粘贴到此处会更好,但我会尝试根据您目前发布的内容给出答案。

Java 的 BigIntegers 尽可能大,以容纳您正在使用的任何操作的结果。 BigIntegers 就像没有溢出异常的 Integers。来自 oracle 文档:

Semantics of arithmetic operations exactly mimic those of Java's integer arithmetic operators, as defined in The Java Language Specification.

很可能您没有为 java 进程分配足够的内存。不确定您如何执行 java 流程,但您正在寻找要提供的这些参数:

java -Xmx1024M -Xms1024M

Is there a variable type bigger than BigInteger?

不,没有。 Biginteger 在幕后使用字节数组,并在需要时为其分配更多 space。它的大小限制是可用内存。

当你使用一半的内存时,你可能会达到极限。到那时,如果它需要增加它拥有的数量,它必须首先分配一个比它正在使用的 space 更大的 space 并且 运行 出来。