线程“main”中的异常 java.lang.OutOfMemoryError:Java 堆空间
使用 [100000][100000] 的二维数组和其他两个 [100000] 的数组。我在整个程序中需要这三个数组,所以无法释放它们的内存。
已经在 Netbeans 中尝试过 VM 选项 -Xmx512m
请具体并逐步说明,我是 Java 和 Netbeans 的新手。
在此先感谢您的帮助....
最佳答案
让我们做一些数学运算。您正在分配一个包含 10,000,000,000 个元素的二维数组,以及另外两个包含 100,000 个元素的数组。
那是 10,002,000,000 个元素。如果它们中的每一个都是一个 int,那就是 40,008,000,000 个字节。那是 37.26 Giga 字节。
你的 -Xmx512m
还远远不够,你需要一些更接近 -Xmx60G
的东西,如果它们真的是整数或 -Xmx15G
最好的情况,其中元素是字节(例如 boolean 值)。但这可能行不通,因为您(可能)没有足够的物理内存。在我看来,您似乎需要一些磁盘支持的存储或数据库。
要么重新考虑您在做什么以及您是如何做的,要么使用具有那么多物理内存的机器。
关于java - 内存不足错误 : Java heap space - Using big array size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055229/