Hi Jason,
I have a hunch that you have more Java processes running than you need
and/or are aware of. For example, by running your Clojure app via lein run
-m clojureweb.core/serve, you have two Java processes: one for Leiningen,
and a separate one (started by Leiningen) for your app. It’s unlikely that
you need Leiningen’s JVM to stick around, so you should probably try
starting your app with the command lein *trampoline* run -m
clojureweb.core/serve. (For details, see “Server-side Projects” in the
Leiningen tutorial
<https://github.com/technomancy/leiningen/blob/f9a464e008214941e93c046413004517325818bb/doc/TUTORIAL.md#server-side-projects>
.)
Also, you didn’t mention how you were starting your REPL(s), but I’m going
to assume that you were using lein repl; if so, that’s the source of *yet
another* Java process or two. In order to refrain from needing to keep
other JVMs running, you might want to use Clojure 1.8’s built-in socket
server REPL
<http://clojure.org/reference/repl_and_main#_launching_a_socket_server>
instead.
Cheers,
Josh
P.S. You mentioned that you’re relatively new to Clojure—welcome! =)
On Monday, March 28, 2016 at 8:11:49 AM UTC-4, Jason Basanese wrote:
>
> Hello all! I'm new to this forum. My name Is Jason Basanese and I am a
> relatively new clojurist.
>
> I recently began hosting my first small full stack Clojure web app. While
> doing this I ran into memory problems with my admittedly small load server.
> The maximum it can take in temp memory is 741MB. Too much of that memory is
> consumed giving an error when I try to run two REPLs on the server. One for
> testing and editing code and the other for leaving the app running. My
> other dynamic content websites which use php directly with Apache use
> minimal memory. Why is it that running a Clojure app like such "lein run -m
> clojureweb.core/serve" takes up so much memory? Here is the code of the
> function I am running with that command.
>
> (defn serve [& args]
> (org.apache.log4j.BasicConfigurator/configure)
> (run-server
> (logger/wrap-with-logger
> (reload/wrap-reload app))
> {:port 8080}))
>
> Are the logger or the wrap-reload making it take up so much memory? Is
> there a better way to run Clojure apps that is less robust? Or is using a
> relatively large amount of memory just a bullet to bite when using Clojure?
> Yes I know an obvious solution would just be to upgrade the server, but
> where's the fun in that?
>
> Requests for more detail, comments, answers and opinions all welcome!
>
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.