I received a message from Moritz that everyone is on openJDK 1.7. I was curious and looked into this a little bit. I found one older thread from this forum [1] that mentioned PermGen and OutOfMemory. The following are some notes that will hopefully help here.
Regarding the exception: Caused by: java.lang.OutOfMemoryError: PermGen space, compiling:(cljs/core/async/impl/ioc_macros.clj:348:1) that line of ioc_macros.clj uses a defrecord. That'd make sense that that would trigger the OutOfMemory as that would generate classes to go into PermGen. Now, the problem in analyzing this is that it might be one part of the system is holding references to older classes and surviving reloads, but other parts are loading/unloading just fine. If the one part is creeping up in size, you might get the PermGen OOME because something triggered it, but what triggered it might not be the root cause. Also, it might be something in one of the libraries you're using, but it could also depend on what you have evaluated in your REPL name space. It might also happen if a thread is still alive through a reload, as mentioned in [2]. One other question: Are you using core.async on the server-side of your application? I wonder if there is a possible situation here where parked IOC threads from a previous app load are being kept around. I don't know core.async well enough to know if/when parked threads go out of scope, but I thought this could be a possibility. [1] - https://groups.google.com/forum/#!topic/clojure/LGZlC5BX92A [2] - http://java.dzone.com/articles/what-permgen-leak On Wednesday, December 17, 2014 7:05:36 PM UTC-5, Steven Yi wrote: > > Out of curiosity, are you colleagues perhaps using Java 8 JDK's? I saw > your message mentions JDK 7 and PermGen was removed in Java 8[1]. > > [1] - http://www.infoq.com/articles/Java-PERMGEN-Removed > > On Wednesday, December 17, 2014 12:41:29 PM UTC-5, Moritz Ulrich wrote: >> >> >> Hello, >> >> I'm getting the following error while working on a Clojure(Script) REPL >> on a middle-sized project after some time. None of my colleagues seem to >> be able to reproduce it. I'm not able to reproduce it on other projects >> either. >> >> Caused by: java.lang.OutOfMemoryError: PermGen space, >> compiling:(cljs/core/async/impl/ioc_macros.clj:348:1) >> at clojure.lang.Compiler.analyzeSeq(Compiler.java:6651) >> at clojure.lang.Compiler.analyze(Compiler.java:6445) >> at clojure.lang.Compiler.analyze(Compiler.java:6406) >> at >> clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5782) >> at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6100) >> at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644) >> at clojure.lang.Compiler.analyze(Compiler.java:6445) >> at clojure.lang.Compiler.analyze(Compiler.java:6406) >> at >> clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5782) >> at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5217) >> at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3846) >> at clojure.lang.Compiler.analyzeSeq(Compiler.java:6642) >> at clojure.lang.Compiler.analyze(Compiler.java:6445) >> at clojure.lang.Compiler.eval(Compiler.java:6700) >> at clojure.lang.Compiler.load(Compiler.java:7130) >> at clojure.lang.RT.loadResourceScript(RT.java:370) >> at clojure.lang.RT.loadResourceScript(RT.java:361) >> at clojure.lang.RT.load(RT.java:440) >> at clojure.lang.RT.load(RT.java:411) >> at clojure.core$load$fn__5066.invoke(core.clj:5641) >> at clojure.core$load.doInvoke(core.clj:5640) >> at clojure.lang.RestFn.invoke(RestFn.java:408) >> at clojure.core$load_one.invoke(core.clj:5446) >> at clojure.core$load_lib$fn__5015.invoke(core.clj:5486) >> at clojure.core$load_lib.doInvoke(core.clj:5485) >> at clojure.lang.RestFn.applyTo(RestFn.java:142) >> at clojure.core$apply.invoke(core.clj:626) >> at clojure.core$load_libs.doInvoke(core.clj:5524) >> at clojure.lang.RestFn.applyTo(RestFn.java:137) >> at clojure.core$apply.invoke(core.clj:626) >> at clojure.core$require.doInvoke(core.clj:5607) >> at clojure.lang.RestFn.invoke(RestFn.java:408) >> at cljs.analyzer$eval21264$fn__21266.invoke(analyzer.clj:1190) >> at clojure.lang.MultiFn.invoke(MultiFn.java:249) >> at cljs.analyzer$analyze_seq.invoke(analyzer.clj:1490) >> >> I'm using lein-repl in combination with weasel to work on the server- >> and client-side (cljs) of this project. The server-side uses the >> component-design by stuartsierra, though the permgen issues don't seem >> to correlate to calls to (reload). >> >> $ lein version >> Leiningen 2.5.0 on Java 1.7.0-u65 OpenJDK 64-Bit Server VM >> >> Some of the dependencies (I suspect some of them are responsible): >> >> [org.clojure/clojure "1.6.0"] >> [org.clojure/core.async "0.1.346.0-17112a-alpha"] >> [com.stuartsierra/component "0.2.2"] >> [org.clojure/tools.namespace "0.2.7"] >> [lein-cljsbuild "1.0.3"] >> [cider/cider-nrepl "0.8.1"] >> > -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.