我有 int K 作为输入(K将介于0到1000000(百万)之间),我希望创建一个高度和宽度为2倍的整数矩阵比K数,加上1个元素。
例如,如果K = 3,我的矩阵将是矩阵[3 * 2 + 1] [3 * 2 + 1] =矩阵[7] [7] 如果K = 178754,我的矩阵将是矩阵[357503] [357503]
我在线程“main”中遇到了 java.lang.OutOfMemoryError:Java堆空间异常
int height;
int width;
int [][] matrix;
public int getKthNumber(int N, int K, String direction) {
this.height = (K * 2) + 1;
this.width = (K * 2) + 1;
****matrix = new int[this.width][this.height];**** // error here
有谁知道如何解决这个小问题,因为我相信其他整个代码都可以吗?
答案 0 :(得分:4)
我的矩阵将是矩阵[357503] [357503]
是的。这就足以让你失去记忆力。 JVM尝试为357503X357503
个整数分配内存,其中每个整数携带32位,几乎产生约476GB。
你究竟想做什么?
答案 1 :(得分:0)
在32位系统中,最高可达2GB。在64位系统上,您可以获得更多。
命令行标志是:
java -Xmx2g myprogram
但在你的情况下似乎这还不够,因为357503 * 357503 * 4/1024/1024/1024(整数字节为4)大约是476G,所以我认为你应该重新考虑你的解决方案。