因垃圾收集问题导致内存不足错误

时间:2017-05-16 02:07:55

标签: java memory garbage-collection jvm

在我的项目中它会抛出" OutOfMemoryError:超出GC开销限制"错误,程序终止。我试图在我们的社区和以下解决方案中使用Google搜索来解决这个问题,但仍然没有成功。

  1. 由于我必须创建一个包含大量arraylist / objects的巨大hashmap,我需要在循环中创建这些对象,以便避免制作" new"对象可能不适合我的情况。

  2. 堆大小:我已经用命令" -Xms2048m -Xmx2048m -XX:MaxPermSize = 1024m"给了足够大的堆。

  3. 因为我发现这可能是一个问题,"超过98%的总时间用于垃圾收集,而且只有不到2%的堆被恢复",我再添加一个命令" -XX:MaxHeapFreeRatio = 50"当超过50%的堆被占用时,它会触发程序开始收集垃圾。虽然Intelij的内存指示器似乎我的程序甚至没有使用这个数量的内存,但垃圾收集根本不应该启动,而它仍然会抛出相同的错误。

  4. 我的代码在Eclipse中运行良好,而在最新版本的Intelij中抛出此错误,应该是一些vm选项配置问题?

  5. 感谢您的帮助!

0 个答案:

没有答案