2012-3-15 9:20:56 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at freeer.core.BuiltIn.<clinit>(BuiltIn.java:162)
at freeer.core.FMParser.BuiltIn(FMParser.java:790)
at freeer.core.FMParser.AddSubExpression(FMParser.java:726)
at freeer.core.FMParser.PrimaryExpression(FMParser.java:273)
at freeer.core.FMParser.UnaryExpression(FMParser.java:319)
at freeer.core.FMParser.MultiplicativeExpression(FMParser.java:435)
at freeer.core.FMParser.AdditiveExpression(FMParser.java:385)
at freeer.core.FMParser.RangeExpression(FMParser.java:556)
at freeer.core.FMParser.RelationalExpression(FMParser.java:511)
at freeer.core.FMParser.EqualityExpression(FMParser.java:476)
at freeer.core.FMParser.AndExpression(FMParser.java:595)
at freeer.core.FMParser.OrExpression(FMParser.java:608)
at freeer.core.FMParser.Expression(FMParser.java:221)
at freeer.core.FMParser.Parenthesis(FMParser.java:283)
at freeer.core.FMParser.PrimaryExpression(FMParser.java:256)
at freeer.core.FMParser.UnaryExpression(FMParser.java:319)
at freeer.core.FMParser.MultiplicativeExpression(FMParser.java:435)
at freeer.core.FMParser.AdditiveExpression(FMParser.java:385)
at freeer.core.FMParser.RangeExpression(FMParser.java:556)
at freeer.core.FMParser.RelationalExpression(FMParser.java:511)
at freeer.core.FMParser.EqualityExpression(FMParser.java:476)
at freeer.core.FMParser.AndExpression(FMParser.java:585)
at freeer.core.FMParser.OrExpression(FMParser.java:608)
at freeer.core.FMParser.Expression(FMParser.java:221)真的很纠结 我一般都是Logger log=Logger.getLogger(Test.Class)
然后log.info(message)最近redeploy后,调试老出这问题,难道一定要加大内存?

解决方案 »

  1.   

    Redeploy次数多了,PermGen溢出是必然的,因为每次重部署,实际上都是把类重新装载了一遍,老的又无法释放。所以一方面加大PermSize,注意不是-Xmx,另一方面溢出了就重启吧。
      

  2.   


    哦,如果等web项目发布出去了,不会出这种问题吧!要不然客户不是很纠结了.
      

  3.   


    不会,唯一注意的是,生产环境重新发布应用后,建议重启服务;否则重发布次数多了也容易溢出。当然,也不排除你乱用static量导致PermSize溢出,不过这种事情很罕见。