我出现内存不足错误,如何解决?Permgen 空间区域是啥意思?是啥原因造成的? [复制]

Posted

技术标签:

【中文标题】我出现内存不足错误,如何解决?Permgen 空间区域是啥意思?是啥原因造成的? [复制]【英文标题】:I am getting out of memory error,how to resolve?what is mean by Permgen space area? What is causing it? [duplicate]我出现内存不足错误,如何解决?Permgen 空间区域是什么意思?是什么原因造成的? [复制] 【发布时间】:2016-04-09 06:15:27 【问题描述】:

我出现内存不足错误,如何解决?Permgen 空间区域是什么意思?是什么原因造成的?

有什么解决办法?

java.lang.OutOfMemoryError: PermGen space
    java.lang.ClassLoader.defineClass1(Native Method)
    java.lang.ClassLoader.defineClassCond(Unknown Source)
    java.lang.ClassLoader.defineClass(Unknown Source)
    java.security.SecureClassLoader.defineClass(Unknown Source)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1814)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
    org.jboss.web.tomcat.service.WebAppClassLoader.findClass(WebAppClassLoader.java:75)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
    java.sql.DriverManager.getConnection(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)

【问题讨论】:

【参考方案1】:

PermGen 是存储与类相关的信息的内存区域。

如果您的类加载器无法在必要时卸载类定义,您可能会遇到与 PermGen 相关的 OutOfMemoryError。

您可以通过增加参数-XX:MaxPermSize=512m 专用于permgen 的内存量来解决此错误

JVM 使用 MaxPermSize 参数来手动定义 PermGen 区域的内存大小。您可以将该参数传递给任何 Java 应用程序(例如作为启动您的 tomcat 的参数)。

【讨论】:

以上是关于我出现内存不足错误,如何解决?Permgen 空间区域是啥意思?是啥原因造成的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在达到 Max 之前 PermGen 空间不足

Java内存不足报错:OutOfMemoryError:PermGen space

如何减少 Grails 中 PermGen 空间的使用

JBoss 4.0.5GA 多次部署应用程序出现 PermGen 内存不足(溢出)问题

matlab安装时储存空间不足

多个项目MyEclipse中启动出现OutOfMemoryError: PermGen space如何解决