int 错误:线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间

Posted

技术标签:

【中文标题】int 错误:线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间【英文标题】:int error : Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 【发布时间】:2018-07-08 10:22:50 【问题描述】:

当我运行此代码时,我收到以下错误:“int error : Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”。

谁能向我解释为什么会发生这种情况?

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);
    

【问题讨论】:

问题出在哪里? 真的吗? new String[1000000000]?仅空数组就需要 4GB。你预计会发生什么? String []arr= new String[1000000000]; 你真的需要这么大的数组吗? arr[10000] 只是为了测试我拿了 arr[1000] 【参考方案1】:

首先,确保您使用的是 64 位 JVM。

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

【讨论】:

以上是关于int 错误:线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试在第二个线程中向自身添加一个 int 并且我的主线程中没有任何变化

确定外部进程的主线程 ID(ReadProcessMemory - 错误 299)

android在主线程下载文件

错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0 [关闭]

在后台创建的 NSManagedObject 变成了主线程上的错误

线程“主”java.lang.NoClassDefFoundError 中的异常:错误名称