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

时间:2017-01-01 16:06:40

标签: java int biginteger

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

3 个答案:

答案 0 :(得分:3)

  

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

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

当你使用了一半的内存时,你可能会达到极限。在这一点上,如果需要增加它的数量,它必须首先分配一个比它正在使用的空间大的空间并用完。

答案 1 :(得分:1)

发生错误是因为JVM的堆空间不足。您可以尝试使用

增加堆大小
java -Xmx256m MyClass.java

Xmx- Max Heap Size

答案 2 :(得分:0)

如果你在这里粘贴你的代码会更好,但我会尝试回答你到目前为止所发布的内容。

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

  

算术运算的语义完全模仿Java的整数算术运算符,如Java语言规范中所定义。

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

java -Xmx1024M -Xms1024M