Java 8:OutOfMemory错误,更改MaxPermSize?

时间:2015-11-25 11:52:58

标签: java memory memory-management java-8

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

java.lang.OutOfMemoryError: GC overhead limit exceeded

我尝试将MaxPermSize 512m 增加到 768 ,但我仍然遇到同样的错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

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

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

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