如何解决OutOfMemoryError:Java堆空间

如何解决OutOfMemoryError:Java堆空间,java,out-of-memory,Java,Out Of Memory,我在评论行中遇到以下错误: "OutOfMemoryError: Java heap space" data.bin文件很大,因此可能会出现此错误。我的问题是,我到底该如何避开这个错误?我见过一些类似-Xmx1024m或类似的东西,但我不知道如何使用jgrasp编译器运行它们 试试看{ RandomAccessFile数据=新的RandomAccessFile(“data.bin”、“rws”); long l=data.length(); 长记录=l/1024; 长cnt=0; 字节[]b

我在评论行中遇到以下错误:

"OutOfMemoryError: Java heap space" 
data.bin文件很大,因此可能会出现此错误。我的问题是,我到底该如何避开这个错误?我见过一些类似-Xmx1024m或类似的东西,但我不知道如何使用jgrasp编译器运行它们

试试看{
RandomAccessFile数据=新的RandomAccessFile(“data.bin”、“rws”);
long l=data.length();
长记录=l/1024;
长cnt=0;
字节[]b=新字节[1024];
while(cnt
您可以使用以下命令增加堆/堆栈大小:

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size
-Xms设置初始Java堆大小
-Xmx设置最大Java堆大小
-Xss设置java线程堆栈大小

您还可以找到更多信息。

您需要根据需要在可用主内存的范围内设置堆的最小和最大大小 -J-Xmx1024m-J-Xms512m

您在Windows上吗?在安装文件夹中有一个名为“winconfig.exe”的文件,双击它,您可以在那里更改堆。如果您在Linux或Mac OS上,它可能被称为类似的文件(其中包含“config”一词)


jgrasp-J-Xmx512m-J-Xms512m试图将整个文件加载到内存中。当您将字节转换为字符串时,它将占用文件大小的两倍多。(字符串使用16位字符)或者您有足够的内存来执行此操作(在这种情况下增加最大值),或者您需要在程序执行此操作时进行更改

您可以只加载值并记住这些值的位置,而不是尝试加载所有键和值。例如,将该值的偏移量存储在文件中


当您再次查找该值时,需要根据需要读取该值。在这种情况下,它可以将您所需的内存减少20倍。

可能重复的-Xmxn和-Xmsn是确定应用程序堆大小的最大值和最小值。
-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size