Bug #834 (closed)
Opened 12 years ago
Closed 11 years ago
JBoss PermGen Errors
| Reported by: | cxallan | Owned by: | cxallan |
|---|---|---|---|
| Priority: | critical | Cc: | atarkowska |
| Sprint: | n.a. | ||
| Total Remaining Time: | n.a. |
Description
JBoss is throwing java.lang.OutOfMemoryError: PermGen space exceptions:
15:12:51,890 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/codegen/CodeStream
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:508)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:584)
at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:214)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:602)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:411)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:405)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
15:12:55,949 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/codegen/CodeStream
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:508)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:584)
at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:214)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:602)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:411)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:405)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
15:51:43,148 ERROR [STDERR] Exception in thread "RMI TCP Connection(idle)"
15:51:43,151 ERROR [STDERR] java.lang.OutOfMemoryError: PermGen space
15:51:57,866 WARN [RunnableTaskWrapper] Unhandled throwable for runnable: org.jnp.server.Main$BootstrapRequestHandler@723e94a6
java.lang.OutOfMemoryError: PermGen space
16:21:54,278 WARN [RunnableTaskWrapper] Unhandled throwable for runnable: org.jnp.server.Main$BootstrapRequestHandler@53b69ca8
java.lang.OutOfMemoryError: PermGen space
16:22:24,906 WARN [RunnableTaskWrapper] Unhandled throwable for runnable: org.jnp.server.Main$BootstrapRequestHandler@6264c005
java.lang.OutOfMemoryError: PermGen space
16:22:48,294 ERROR [STDERR] Exception in thread "WorkerThread#0[10.34.2.145:57702]"
16:22:48,294 ERROR [STDERR] java.lang.OutOfMemoryError: PermGen space
Change History (7)
comment:1 Changed 12 years ago by cxallan
- Cc josh removed
comment:2 Changed 12 years ago by cxallan
comment:3 Changed 12 years ago by jmoore
For anyone experiencing this, it would probably be useful to run JBoss with the following:
JAVA_OPTS=-XX:-HeapDumpOnOutOfMemoryError $JBOSS_HOME/bin/run.sh
comment:4 Changed 12 years ago by cxallan
- Cc atarkowska added
- Owner changed from jmoore to callan
- Status changed from new to assigned
Looking at the JVM's permanent generation usage (explanation on what the columns represent is available here (java.sun.com)):
$ jstat -gcutil 13242 S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 97.83 47.87 82.41 99.12 327 4.487 33 25.707 30.194
The important column for us is P which tells us the permanent generation space utilization is at 99.12%. Not exactly ideal and just begging to be pushed beyond the maximum allowable space.
Checking the actual numbers on permanent generation maximum allowable space we achieve by examining further output from jstat:
$ bin/jstat -gcpermcapacity 13242 PGCMN PGCMX PGC PC YGC FGC FGCT GCT 21248.0 86016.0 82240.0 82240.0 328 33 25.707 30.207
So, it would appear that our solution lies in increasing the size of the permanent generation using the -XX:MaxPermSize JVM arguments as documented here (java.sun.com).
The default permanent generation size for Java 5.0 and newer VMs is:
- 64MB on 32-bit systems
- 64MB * 30% (83.20MB) on 64-bit systems
comment:5 Changed 12 years ago by cxallan
Now testing with the following:
JAVA_OPTS="-XX:MaxPermSize=128M" $JBOSS_HOME/bin/run.sh
comment:6 Changed 12 years ago by cxallan
- Milestone set to 3.0-Beta2.3
comment:7 Changed 11 years ago by jmoore
- Milestone set to OMERO-Beta4
- Resolution set to fixed
- Status changed from assigned to closed
As of #1106 (OmeroBlitz migration) JBoss is no longer used. The max perm options, though, may need to be added to OmeroBlitz's startup eventually.
Context from the JBoss server.log: