如何声明大小为10位数或更大的数字数组?

时间:2014-09-16 15:32:40

标签: java arrays

我试图创建一个数字(或整数,无论​​你想从它的整数和长范围内调用它)array..say的大小。这是我的代码。当我执行它时,我得到了内存堆大小'例外 我甚至尝试增加转储文件的大小或HVM配置中的任何内容。不起作用

CODE片段(不一定需要理解。只是跳到最后:

int dsum=0;
int c1=-1;
int abno[]=new int[28124];

for(int i=2;i<28124;i++)
{
    int f=(i/2);
    for(int j=1;j<=f;j++)
    {
        if(i%j==0)
        {
            dsum+=j;
        }
    }
    if(dsum>i)
    {
        c1++;// AROUND 29000 IN THE END
        abno[c1]=i;
    }
}
int abnos[]=new int[(c1*(c1+1))/2];//CANT STORE THIS BIG A VALUE

2 个答案:

答案 0 :(得分:2)

您可以在java中增加堆大小

-Xmx<size> ,maximum heap size
-Xms<size> ,minimium heap size

e.g。 java -Xms 256m -Xmx 6g yourProgramName。如果您使用的是某些IDE(例如intellij),则可以通过VM Options

传递这些选项

答案 1 :(得分:1)

您正在请求只有1.6GB的堆空间。 32位JVM只能处理1.2-1.6 GB的堆空间,具体取决于操作系统,环境和确切的实现。没有设置可以帮助你。

您的选择是:

  • 获取真正的IDE并将其配置为使用64位VM。
  • BlueJ通常用于学习目的。因此,任务远不及可能需要100MB内存的东西,更不用说演出了。为了减少占用空间而改进解决方案。
  • 在BlueJ中编写代码,但使用命令行启动并使用正确的64位VM。
  • 修复BlueJ以支持64位虚拟机