我正在尝试找出与 Java 7 x64 中的 BigIntegers 相关的以下问题。我正在尝试以极高的幂计算一个数字。代码如下,然后是问题的描述。
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)
BigInteger images = new BigInteger("2").pow(15544);
System.out.println(
"The number of possible 16 bpc color 800x600 images is: "
+ images.toString());
}
}
我在打印此操作的结果时遇到问题。当此代码执行时,它会打印消息但不打印images.toString()
.
为了隔离问题,我开始计算 2 的幂,而不是该行注释中列出的所需计算。在我测试过的两个系统上,2^15544
是触发问题的最小计算;2^15543
工作正常。
我还没有接近主机系统的内存限制,我不相信我什至接近 VM 限制(无论如何运行 VM 参数-Xmx1024M
-Xms1024M
都没有效果)。
在互联网上四处寻找答案后,我开始怀疑我在BigInteger
这些类型用于内部数据存储String
的数组(Integer.MAX_VALUE
如果问题出在String
我认为可以扩展BigInteger
和编写一个打印方法,该方法一次喷出几个字符,直到整个BigInteger
打印出来,但我宁愿怀疑问题出在其他地方。
感谢您花时间阅读我的问题。