我正在使用Java 8
运行我的应用程序,但是我收到了以下错误:
java.lang.OutOfMemoryError: GC overhead limit exceeded
我尝试将MaxPermSize
从 512m 增加到 768 ,但我仍然遇到同样的错误。我该如何解决这个问题?
答案 0 :(得分:4)
正如@Ajan所说,Java 8不再具有“permgen”堆空间,并且该选项将被忽略。
但这根本不是一个permgen问题。实际上,它很可能是主Java堆已满的标志。如果JVM检测到GC在过去几个GC周期中占用的CPU总时间过长,则抛出此异常。这通常是因为堆已接近满,并且GC正在越来越频繁地运行。
因此,问题的“快速解决方案”是使用-Xmx...
选项增加主堆大小。但是,如果真正的问题是你有内存泄漏,那么这只是推迟了不可避免的事情。除非你已经理解为什么你的应用程序使用了大量内存,否则你应该开始寻找内存泄漏。