I haven't hit the permgen issue, but it sounds like I have a similar setup to you. Out of curiosity, how do you redeploy while compiling your .clj files? I typically connect via Slime and use slime-load- file, which I assume calls (load filename)
Allen On Jun 11, 1:23 pm, hughw <hwink...@gmail.com> wrote: > On Jun 11, 11:38 am, Rob <rob.nikan...@gmail.com> wrote: > > > Hi all, > > > I'm using Clojure for web apps inside Tomcat. If I don't compile > > my .clj files ahead of time, I will eventually get one of these > > OutOfMemory errors, after a number of redeployments. Is there > > something I can do about this? Is this a bug somewhere, in my code, > > or in Clojure, or in Tomcat; or a limitation of the JVM? > > PermGen space is where Sun's VM keeps class bytes. It's not garbage > collected, so if you keep adding classes to a running VM you will > eventally run out. We can only deploy a couple of times on our non- > clojure webapp, in Jboss + Tomcat. It's not unique to Clojure, but > it's true that generating classes on the fly can burn up permGen space > faster. Try increasng your PermGen space as a workaround. This arg > your jvm: > -XX:MaxPermGen=128m or so might help. > > Hugh > > > > > thanks, > > Rob > > > Here is the entire barfage from my Tomcat log: > > > Jun 11, 2009 12:01:57 PM org.apache.catalina.core.StandardWrapperValve > > invoke > > SEVERE: Servlet.service() for servlet ClojureServlet threw exception > > java.lang.NullPointerException > > at clojure.lang.Var.popThreadBindings(Var.java:289) > > at biz.encodia.webapps.webdispatch > > $make_dispatcher__3759$fn__3761.invoke(webdispatch.clj:90) > > at clojure.lang.Var.invoke(Var.java:350) > > at biz.encodia.webapps.ClojureServlet.processRequest > > (ClojureServlet.java:70) > > at biz.encodia.webapps.ClojureServlet.doGet > > (ClojureServlet.java:99) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java: > > 617) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java: > > 717) > > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter > > (ApplicationFilterChain.java:290) > > at org.apache.catalina.core.ApplicationFilterChain.doFilter > > (ApplicationFilterChain.java:206) > > at org.apache.catalina.core.StandardWrapperValve.invoke > > (StandardWrapperValve.java:233) > > at org.apache.catalina.core.StandardContextValve.invoke > > (StandardContextValve.java:191) > > at org.apache.catalina.authenticator.AuthenticatorBase.invoke > > (AuthenticatorBase.java:433) > > at org.apache.catalina.core.StandardHostValve.invoke > > (StandardHostValve.java:128) > > at org.apache.catalina.valves.ErrorReportValve.invoke > > (ErrorReportValve.java:102) > > at org.apache.catalina.core.StandardEngineValve.invoke > > (StandardEngineValve.java:109) > > at org.apache.catalina.connector.CoyoteAdapter.service > > (CoyoteAdapter.java:286) > > at org.apache.coyote.http11.Http11Processor.process > > (Http11Processor.java:845) > > at org.apache.coyote.http11.Http11Protocol > > $Http11ConnectionHandler.process(Http11Protocol.java:583) > > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run > > (JIoEndpoint.java:447) > > at java.lang.Thread.run(Thread.java:613) > > Jun 11, 2009 12:04:23 PM org.apache.catalina.core.ApplicationContext > > log > > SEVERE: StandardWrapper.Throwable > > java.lang.ExceptionInInitializerError > > at biz.encodia.webapps.ClojureServlet.loadDispatchCode > > (ClojureServlet.java:32) > > at biz.encodia.webapps.ClojureServlet.init(ClojureServlet.java: > > 49) > > at org.apache.catalina.core.StandardWrapper.loadServlet > > (StandardWrapper.java:1172) > > at org.apache.catalina.core.StandardWrapper.allocate > > (StandardWrapper.java:808) > > at org.apache.catalina.core.StandardWrapperValve.invoke > > (StandardWrapperValve.java:129) > > at org.apache.catalina.core.StandardContextValve.invoke > > (StandardContextValve.java:191) > > at org.apache.catalina.authenticator.AuthenticatorBase.invoke > > (AuthenticatorBase.java:433) > > at org.apache.catalina.core.StandardHostValve.invoke > > (StandardHostValve.java:128) > > at org.apache.catalina.valves.ErrorReportValve.invoke > > (ErrorReportValve.java:102) > > at org.apache.catalina.core.StandardEngineValve.invoke > > (StandardEngineValve.java:109) > > at org.apache.catalina.connector.CoyoteAdapter.service > > (CoyoteAdapter.java:286) > > at org.apache.coyote.http11.Http11Processor.process > > (Http11Processor.java:845) > > at org.apache.coyote.http11.Http11Protocol > > $Http11ConnectionHandler.process(Http11Protocol.java:583) > > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run > > (JIoEndpoint.java:447) > > at java.lang.Thread.run(Thread.java:613) > > Caused by: java.lang.RuntimeException: java.lang.OutOfMemoryError: > > PermGen space (core.clj:2151) > > at clojure.lang.RT.<clinit>(RT.java:294) > > ... 15 more > > Caused by: java.lang.OutOfMemoryError: PermGen space (core.clj:2151) > > at clojure.lang.Compiler.eval(Compiler.java:4617) > > at clojure.lang.Compiler.eval(Compiler.java:4593) > > at clojure.lang.Compiler.load(Compiler.java:4931) > > at clojure.lang.RT.loadResourceScript(RT.java:329) > > at clojure.lang.RT.loadResourceScript(RT.java:320) > > at clojure.lang.RT.load(RT.java:398) > > at clojure.lang.RT.load(RT.java:370) > > at clojure.lang.RT.doInit(RT.java:405) > > at clojure.lang.RT.<clinit>(RT.java:291) > > ... 15 more > > Caused by: java.lang.OutOfMemoryError: PermGen space > > at java.lang.ClassLoader.defineClass1(Native Method) > > at java.lang.ClassLoader.defineClass(ClassLoader.java:675) > > at java.lang.ClassLoader.defineClass(ClassLoader.java:520) > > at clojure.lang.DynamicClassLoader.defineClass > > (DynamicClassLoader.java:42) > > at clojure.lang.Compiler$FnExpr.getCompiledClass(Compiler.java: > > 3465) > > at clojure.lang.Compiler$FnExpr.eval(Compiler.java:3476) > > at clojure.lang.Compiler.eval(Compiler.java:4600) > > ... 23 more > > Jun 11, 2009 12:04:23 PM org.apache.catalina.core.StandardWrapperValve > > invoke > > SEVERE: Allocate exception for servlet ClojureServlet > > java.lang.OutOfMemoryError: PermGen space > > at java.lang.ClassLoader.defineClass1(Native Method) > > at java.lang.ClassLoader.defineClass(ClassLoader.java:675) > > at java.lang.ClassLoader.defineClass(ClassLoader.java:520) > > at clojure.lang.DynamicClassLoader.defineClass > > (DynamicClassLoader.java:42) > > at clojure.lang.Compiler$FnExpr.getCompiledClass(Compiler.java: > > 3465) > > at clojure.lang.Compiler$FnExpr.eval(Compiler.java:3476) > > at clojure.lang.Compiler.eval(Compiler.java:4600) > > at clojure.lang.Compiler.eval(Compiler.java:4593) > > at clojure.lang.Compiler.load(Compiler.java:4931) > > at clojure.lang.RT.loadResourceScript(RT.java:329) > > at clojure.lang.RT.loadResourceScript(RT.java:320) > > at clojure.lang.RT.load(RT.java:398) > > at clojure.lang.RT.load(RT.java:370) > > at clojure.lang.RT.doInit(RT.java:405) > > at clojure.lang.RT.<clinit>(RT.java:291) > > at biz.encodia.webapps.ClojureServlet.loadDispatchCode > > (ClojureServlet.java:32) > > at biz.encodia.webapps.ClojureServlet.init(ClojureServlet.java: > > 49) > > at org.apache.catalina.core.StandardWrapper.loadServlet > > (StandardWrapper.java:1172) > > at org.apache.catalina.core.StandardWrapper.allocate > > (StandardWrapper.java:808) > > at org.apache.catalina.core.StandardWrapperValve.invoke > > (StandardWrapperValve.java:129) > > at org.apache.catalina.core.StandardContextValve.invoke > > (StandardContextValve.java:191) > > at org.apache.catalina.authenticator.AuthenticatorBase.invoke > > (AuthenticatorBase.java:433) > > at org.apache.catalina.core.StandardHostValve.invoke > > (StandardHostValve.java:128) > > at org.apache.catalina.valves.ErrorReportValve.invoke > > (ErrorReportValve.java:102) > > at org.apache.catalina.core.StandardEngineValve.invoke > > (StandardEngineValve.java:109) > > at org.apache.catalina.connector.CoyoteAdapter.service > > (CoyoteAdapter.java:286) > > at org.apache.coyote.http11.Http11Processor.process > > (Http11Processor.java:845) > > at org.apache.coyote.http11.Http11Protocol > > $Http11ConnectionHandler.process(Http11Protocol.java:583) > > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run > > (JIoEndpoint.java:447) > > at java.lang.Thread.run(Thread.java:613) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---