Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建整数数组thorws Java堆空间_Java_Eclipse - Fatal编程技术网

创建整数数组thorws Java堆空间

创建整数数组thorws Java堆空间,java,eclipse,Java,Eclipse,我有一个简单的程序,它给了我内存不足的问题: public static void main(String[] args) { int i[] = new int[457560000]; } 这会引发以下错误: 线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间 我曾尝试在eclpse中设置VM参数,如下所示:-Xms1024M-Xmx2048M,但仍然得到相同的错误 我不需要这么大的阵列,但是我在图像处理方面遇到了一个问题,图像的大小非常

我有一个简单的程序,它给了我内存不足的问题:

public static void main(String[] args) {

    int i[] = new int[457560000];
}
这会引发以下错误:

线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间

我曾尝试在eclpse中设置VM参数,如下所示:-Xms1024M-Xmx2048M,但仍然得到相同的错误

我不需要这么大的阵列,但是我在图像处理方面遇到了一个问题,图像的大小非常大。调试时,我发现AWT包试图创建此阵列,但由于内存问题而失败

如何解决此问题?运行此代码之前需要设置多少内存?

更新:

我还尝试在eclipse运行配置VM设置下为Xmx设置6GB,我的机器挂起了一段时间,但再次遇到相同的错误。

根据您使用的JRE,您对给定代码段的运行配置至少需要
-Xmx2640M


由于
-Xmx
是仅在必要时使用的最大值,因此您可以使用例如
-Xmx256000M
运行程序,然后找出实际使用的内存量

为什么需要创建这样大小的数组?Java抛出错误是因为它没有足够的内存来创建这么大的变量数组。你真的需要4.56亿个整数吗???可能重复即使你真的需要那么大的空间,分配这么大的数组也是非常庞大的,并且会遇到内存问题。一般来说,当我有一个我知道会那么大的数组时,我会使用列表或arraylist来代替。@ΦXocę웃Пepeúpa,我已经更新了我的问题,说明我为什么要面对这个问题。你能帮我解决这个问题吗?我已经设置好了,你可以看到我的问题,我提到过。如果我用
-Xmx2048M
运行你的代码段,会发生OutOfMemoryError,而
-Xmx2640M
则不会有错误。我在Windows上使用了64位jdk1.8.060来运行您的代码段。你使用什么JRE?