Java 8: OutOfMemory Error, change MaxPermSize?
我正在使用Java 8运行我的应用程序,但是我收到了以下错误:
我试图将MaxPermSize从512m增加到768,但我仍然得到同样的错误。 我怎么解决这个问题?
-
考虑一下这篇文章。
-
JVM v8中的MaxPermSize不起作用 - 没有PermGen。
-
感谢您的回复,如果没有PermGen我应该如何解决问题?
-
请参阅我的答案,以及链接的Q& As
正如@Ajan所述,Java 8不再具有"permgen"堆空间,并且该选项将被忽略。
但这根本不是一个permgen问题。 实际上,它很可能是主Java堆已满的标志。 如果JVM检测到GC在过去几个GC周期中占用的CPU总时间过长,则抛出此异常。 这通常是因为堆接近满,并且GC正在越来越频繁地运行。
因此,问题的"快速解决方案"是使用-Xmx...选项增加主堆大小。 但是,如果真正的问题是你有内存泄漏,那么这只是推迟了不可避免的事情。 除非您已经理解为什么您的应用程序使用了大量内存,否则您应该开始寻找内存泄漏。
-
感谢您的回复,-Xmx已设置为1024,我应该进一步提升吗? 我应该怎么做呢?
-
如果你已经增加了-Xmx,我会建议你在再次增加之前寻找潜在的内存泄漏。
-
谢谢,我会,但想知道这个修复是否有效,你会建议增加它吗?
-
如果问题是内存泄漏,则无关紧要。 它不是内存泄漏......然后"足够大以运行您的应用程序"。 但"正确"的答案还取决于您使用的是32位还是64位JVM,以及有多少可用RAM。