[armedbear-devel] changes to autoloading affecting PermGen space?

Alessio Stalla alessiostalla at gmail.com
Tue Sep 4 23:05:49 UTC 2012

On Tue, Sep 4, 2012 at 8:16 PM, Alan Ruttenberg
<alanruttenberg at gmail.com> wrote:
> On Tue, Sep 4, 2012 at 1:59 PM, Erik Huelsmann <ehuels at gmail.com> wrote:
>> Hi Alan, Alessio,
>> On Tue, Sep 4, 2012 at 9:22 AM, Alessio Stalla <alessiostalla at gmail.com>
>> wrote:
>>> On Tue, Sep 4, 2012 at 6:45 AM, Alan Ruttenberg
>>> <alanruttenberg at gmail.com> wrote:
>>> > I've recently been getting
>>> >
>>> > ; Evaluation aborted on #<JAVA-EXCEPTION java.lang.OutOfMemoryError:
>>> > PermGen space {2D9FD5EA}>.
>>> >
>>> > I'm wondering whether it is possible that the recent changes to
>>> > autoloading are filling more of this space, leading to my (and
>>> > presumably others at some point) errors.
>>> Well, unless you're using tons of Java libraries, PermGen exhaustion
>>> in ABCL pretty much implies a memory leak (such as many functions
>>> never getting garbage collected). I don't know if that can be caused
>>> by autoloads or not, though.
>> The autoloads change simply means that several thousand instances of the
>> Java class org.armedbear.lisp.Autoload are being instantiated instead of
>> several hundred. I don't see how that would affect PermGen space.
>> Could it be that your own project has surpassed some critical size?
> No, this stuff worked before. I'm wondering if it is java 1.7 related. I was
> getting all kinds of problems with different formulations of the java
> startup - crazy stuff like not seeing the main class or not being able to
> start it. I'm wondering whether there is some sort of truncation of command
> line when using abcl under slime - running the same thing under a shell in
> emacs worked.
> In any case, I'm now using java -jar abcl.jar, putting the classpath in
> CLASSPATH, and adjusting the Permsize to 128m, and seem to be able to
> continue.
> I hate when I can't isolate things.
> If someone has time perhaps you can do some experiments with older and newer
> versions of ABCL under 1.6 and 1.7, using the gc details setting to get a
> peek at whether memory allocation looks to be different. But it isn't
> blocking me atm.

IIRC the default size of the PermGen is 64MB. Considering that
abcl.jar is well below that size (and it includes a lot of files that
are not Java classes), it cannot possibly fill that space by itself,
unless it leaks memory.

That said, there are many things that could go wrong outside abcl. For
example, if your 1.7 installation is a 64-bit VM while the 1.6 one was
32-bit, you should expect greater memory consumption, and perhaps abcl
+ your code become bigger than 64MB.

Also, when do you get those PermGen errors? During compilation, loading, both?


More information about the armedbear-devel mailing list