Skip to content
Demonstration app for CLJ-1125.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A sample app that demonstrates the efficacy of the patch for

It includes a script that installs Tomcat, creates an uberwar, then deploys/undeploys it in a loop, printing permgen and loaded class stats for each run.

When ran against Clojure 1.5.1, permgen is exhausted in 4-6 loop invocations. When ran against a patched version of 1.6.0, it runs indefinitely.


You'll need wget, zip, unzip, and lein (>= 2.2.0) in your path.

The bin/ script will setup Tomcat and start the deploy loop. To run against an unpatched 1.5.1:

$ ./bin/

To run against a local 1.6.0-master build:

$ ./bin/ local

To run against 1.6.0-alpha2:

$ ./bin/ alpha2

In addition to watching memory stats in the output of the script, you should also tail -f target/tomcat/logs/catalina.<date>.log to watch for ThreadLocal leak warnings and OOM exceptions.

Watching the permgen chart in VisualVM is also handy.


Copyright © 2013 Toby Crawley

Distributed under the Eclipse Public License, the same as Clojure.

You can’t perform that action at this time.