创建数组时没有足够的堆空间

时间:2016-02-17 21:12:10

标签: java arrays heap

我编写了以下代码将一维数组转换为2D数组。每当我将它用于小型数组时,它都可以正常工作,只要数组太大,代码就会引发java.lang.OutOfMemoryError: Java heap space异常。

byte[][] twoD = new byte[(int)Math.ceil(xlArray.length / (double)4096)][4096];

它只是IDE中引起的问题,因为它无法访问机器上足够的堆空间或更多吗?

2 个答案:

答案 0 :(得分:1)

IDE(任何IDE)通常会生成具有自己的内存设置的子进程。您通常可以在某种配置文件中配置它们。

在Eclipse中例如选择菜单“Run” - > “运行配置”。在“Java Application”配置中,转到“Arguments”选项卡。

在里面你可以设置VM参数。有关内存管理的信息,请查看Java Non-Standard Options

答案 1 :(得分:0)

调用java时使用:

  • -Xms指定初始Java堆大小。
  • -Xmx最大Java堆大小。(默认大小为128mb)。

看看这里:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html

如果你正在使用netbeans,eclipse等ide,你可以找到Run Configurations选项 - >参数 - > VM Arguments并设置Xmx和(或)Xms。

How can I increase the JVM memory?