防止Intellij中由于未知原因导致的Java堆空间错误

防止Intellij中由于未知原因导致的Java堆空间错误,java,intellij-idea,heap-memory,Java,Intellij Idea,Heap Memory,我目前正在处理一个web开发项目,直接通过Intellij内部的Wildfly部署它的.war文件 项目循环浏览URL列表,其中每个URL都包含一个xml数据文件,检索每个数据文件,并解析每个数据文件 通常,每个xml数据文件的大小约为5MB;然而,每1000个文件将产生一个大约50MB大小的文件 每当程序访问50MB文件时,我都会收到一个Java堆空间错误: 10:07:32,165 ERROR [org.springframework.scheduling.support.TaskUtils

我目前正在处理一个web开发项目,直接通过Intellij内部的Wildfly部署它的.war文件

项目循环浏览URL列表,其中每个URL都包含一个xml数据文件,检索每个数据文件,并解析每个数据文件

通常,每个xml数据文件的大小约为5MB;然而,每1000个文件将产生一个大约50MB大小的文件

每当程序访问50MB文件时,我都会收到一个Java堆空间错误:

10:07:32,165 ERROR [org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler] (pool-13-thread-1) Unexpected error occurred in scheduled task.: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3332)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596)
    at java.lang.StringBuffer.append(StringBuffer.java:367)
    at java.io.StringWriter.write(StringWriter.java:94)
    at org.glassfish.json.JsonGeneratorImpl.flushBuffer(JsonGeneratorImpl.java:701)
    at org.glassfish.json.JsonWriterImpl.writeArray(JsonWriterImpl.java:95)
    at org.glassfish.json.JsonWriterImpl.write(JsonWriterImpl.java:117)
    at org.glassfish.json.JsonArrayBuilderImpl$JsonArrayImpl.toString(JsonArrayBuilderImpl.java:263)
在本例中,通过更改Intellij的idea64.exe.vmoptions文件,我已将Intellij的最大堆大小增加到20GB,但问题仍然存在

正因为如此,我不认为堆空间不足,而且由于我在代码中实现了检查以防止读取格式不正确的文件,还有哪些可能会导致程序运行到堆空间错误


谢谢。

我相信vmoptions文件是为IntelliJ编写的-IntelliJ是用java编写的,所以它有自己的虚拟机选项。如果我理解正确,您需要增加服务器上的堆大小。我找到了一个关于YT的教程,可能会有帮助。如果您找到了一个解决方案,用所有必需的步骤回答您自己的问题并将其标记为已解决肯定会帮助其他人:)为了理智起见,请确保您的程序中没有任何可能导致堆空间不足的泄漏。确保正在清理类的所有实例。如果一个实例超出范围,请确保它没有被任何数据结构引用,以免被垃圾收集。我相信vmoptions文件是为IntelliJ编写的-IntelliJ是用java编写的,因此它有自己的虚拟机选项。如果我理解正确,您需要增加服务器上的堆大小。我找到了一个关于YT的教程,可能会有帮助。如果您找到了一个解决方案,用所有必需的步骤回答您自己的问题并将其标记为已解决肯定会帮助其他人:)为了理智起见,请确保您的程序中没有任何可能导致堆空间不足的泄漏。确保正在清理类的所有实例。如果一个实例超出范围,请确保它没有被任何数据结构引用,以免被垃圾收集。