关于内存:Java 8:OutOfMemory错误,更改MaxPermSize?

Java 8: OutOfMemory Error, change MaxPermSize?

本问题已经有最佳答案,请猛点这里访问。

我正在使用Java 8运行我的应用程序,但是我收到了以下错误:

1
java.lang.OutOfMemoryError: GC overhead limit exceeded

我试图将MaxPermSize从512m增加到768,但我仍然得到同样的错误。 我怎么解决这个问题?


正如@Ajan所述,Java 8不再具有"permgen"堆空间,并且该选项将被忽略。

但这根本不是一个permgen问题。 实际上,它很可能是主Java堆已满的标志。 如果JVM检测到GC在过去几个GC周期中占用的CPU总时间过长,则抛出此异常。 这通常是因为堆接近满,并且GC正在越来越频繁地运行。

因此,问题的"快速解决方案"是使用-Xmx...选项增加主堆大小。 但是,如果真正的问题是你有内存泄漏,那么这只是推迟了不可避免的事情。 除非您已经理解为什么您的应用程序使用了大量内存,否则您应该开始寻找内存泄漏。