Java Intelij内存不足错误,存在垃圾回收问题

Java Intelij内存不足错误,存在垃圾回收问题,java,memory,garbage-collection,jvm,Java,Memory,Garbage Collection,Jvm,在我的项目中,它抛出“OutOfMemoryError:GC开销限制超出”错误,程序终止。在我们的社区中,我试图通过谷歌搜索来解决这个问题,但仍然没有成功 由于我必须创建一个包含大量arraylist/对象的大型hashmap,因此我需要在循环期间创建这些对象,因此避免生成“新”对象的方法可能不适用于我的情况 堆大小:我已经使用命令“-Xms2048m-Xmx2048m-XX:MaxPermSize=1024m”赋予堆足够大的大小 由于我发现这可能是“超过98%的总时间花费在垃圾收集上,而不到2

在我的项目中,它抛出“OutOfMemoryError:GC开销限制超出”错误,程序终止。在我们的社区中,我试图通过谷歌搜索来解决这个问题,但仍然没有成功

  • 由于我必须创建一个包含大量arraylist/对象的大型hashmap,因此我需要在循环期间创建这些对象,因此避免生成“新”对象的方法可能不适用于我的情况

  • 堆大小:我已经使用命令“-Xms2048m-Xmx2048m-XX:MaxPermSize=1024m”赋予堆足够大的大小

  • 由于我发现这可能是“超过98%的总时间花费在垃圾收集上,而不到2%的堆被恢复”的问题,因此我又添加了一个命令“-XX:MaxHeapFreeRatio=50”,当超过50%的堆被占用时,它会触发程序开始收集垃圾。虽然Intelij的内存指示器看起来我的程序甚至没有使用这个数量的内存,但垃圾收集不应该启动,因为它仍然抛出相同的错误

  • 我的代码在Eclipse中运行良好,但在最新版本的Intelij中抛出了这个错误,这应该是一些vm选项配置问题吗


  • 谢谢你的帮助

    您的项目应该在任何IDE中或在没有IDE的情况下运行。如果您设法找到一个程序在一个IDE下失败,而在另一个IDE下失败,这是非常奇怪的,因为JVM作为自己的进程运行。顺便说一句,2GB内存不是很多,但这并不重要。我将触发一个堆转储,并查看内存的使用位置。我也会尝试给这个程序尽可能多的内存,比如说32GB,看看它是如何运行的。谢谢Peter。我将尝试你提到的方法。你的项目应该在任何IDE中运行,或者没有IDE。如果您设法找到一个程序在一个IDE下失败,而在另一个IDE下失败,这是非常奇怪的,因为JVM作为自己的进程运行。顺便说一句,2GB内存不是很多,但这并不重要。我将触发一个堆转储,并查看内存的使用位置。我也会尝试给这个程序尽可能多的内存,比如说32GB,看看它是如何运行的。谢谢Peter。我将尝试你提到的方式。