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
-~----------~----~----~----~------~----~------~--~---

Reply via email to