int错误:线程中出现异常;“主要”;java.lang.OutOfMemoryError:java堆空间

int错误:线程中出现异常;“主要”;java.lang.OutOfMemoryError:java堆空间,java,arrays,exception,Java,Arrays,Exception,当我运行这段代码时,我得到以下错误:“int error:Exception in thread”main“java.lang.OutOfMemoryError:java堆空间” 有人能向我解释一下为什么会发生这种情况吗 import java.lang.*; import java.util.*; public class Eleven { static void name(int n) { int f1 = 0, f2 = 1, i; int

当我运行这段代码时,我得到以下错误:“int error:Exception in thread”main“java.lang.OutOfMemoryError:java堆空间”

有人能向我解释一下为什么会发生这种情况吗

import java.lang.*;
import java.util.*;
public class Eleven
{
    static void name(int n)
    {
        int f1 = 0, f2 = 1, i;
        int next;
        String []arr= new String[1000000000];

        if (n < 1)
            return;

        for (i = 1; i <= n+1; i++)
        {

            next = f1 + f2;
            arr[next]="O";
            f1 = f2;
            f2 = next;
        }
         for (i = 1; i <= n+1; i++)
         {
             if(arr[i]!="O")
                 arr[i]="o";
         }
         for (i = 1; i <= n+1; i++)
         {
        System.out.print(arr[i]);
         }
    }    


    public static void main(String[] args) 
    {
        int n;
        System.out.println("enter the lenth of name");
        Scanner sc=new Scanner(System.in); 
        n=sc.nextInt();
        name(n);
    }
}
import java.lang.*;
导入java.util.*;
公共十一班
{
静态无效名称(int n)
{
int f1=0,f2=1,i;
int-next;
字符串[]arr=新字符串[100000000];
if(n<1)
返回;

对于(i=1;i首先,确保您使用的是64位JVM

其次,使用以下参数向JVM添加内存:
-Xms512m-Xmx4g

问题在哪里?真的吗?
新字符串[100000000]
?空数组只需要4GB。你希望发生什么?
String[]arr=new String[100000000];
你真的需要这么大的数组吗?arr[10000]只是为了测试我用的arr[1000]