Java 是否存在大于BigInteger的变量类型?

Java 是否存在大于BigInteger的变量类型?,java,int,biginteger,Java,Int,Biginteger,我目前正在做一个项目,遇到了一个问题。我正在写的程序需要比int更大的数字。所以,我用了Math.biginger。将许多大整数相加后,我得到一个OutofMemory错误。我假设这意味着数据类型不够大。是否存在更大的数据类型?如果没有,如何解决此问题?发生此错误是因为JVM的堆空间不足。您可以尝试使用 java -Xmx256m MyClass.java Xmx- Max Heap Size 如果您将代码粘贴到这里会更好,但我将尝试用您目前发布的内容给出答案 Java的BigInteger

我目前正在做一个项目,遇到了一个问题。我正在写的程序需要比int更大的数字。所以,我用了Math.biginger。将许多大整数相加后,我得到一个OutofMemory错误。我假设这意味着数据类型不够大。是否存在更大的数据类型?如果没有,如何解决此问题?

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

java -Xmx256m MyClass.java

Xmx- Max Heap Size

如果您将代码粘贴到这里会更好,但我将尝试用您目前发布的内容给出答案

Java的BigInteger被设置为容纳所使用的任何操作的结果所需的大小。大整数与没有溢出异常的整数一样。从oracle文档:

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

很可能您没有为java进程分配足够的内存。不确定如何执行java进程,但需要提供以下参数:

java -Xmx1024M -Xms1024M
是否存在大于BigInteger的变量类型

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


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

不,这不是异常的意思。正如它的名字和javadoc所指出的,这意味着JVM正在耗尽内存。好的,那么有可能为JVM分配更多内存吗?或者它使用了所有的系统内存?Google for是否有可能为JVM分配更多内存?您将得到答案。谷歌是你的朋友。你可能做错了什么。你想解决什么需要超大整数的问题?请发布一些代码,因为你可能做了一些与添加大整数无关的错误integers@OctopusProteins不,只要在Windows或终端(如果是Linux)中的命令行中执行,然后执行该程序。分配是保存还是每次重新启动都需要它?@octopus这只是一个命令。您不需要在任何地方添加代码。默认的最大堆大小是物理内存的一半(物理内存大小为192 MB),或者是物理内存的四分之一(物理内存大小为1 GB)。您可以在bash文件中设置它,以便它自动发生。好的。谢谢你的及时回复。我现在就试试。是的,我现在正在试。谢谢