我出现内存错误,怎么解决?Permgen空间区域是什么意思?是什么造成的?

时间:2016-01-05 12:10:55

标签: java

我出现内存错误,如何解决?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 个答案:

答案 0 :(得分:1)

PermGen 是一个存储区域,存储与类相关的信息

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

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

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