Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] Having a Bad Week - eclipse sick

I am no substitute for a short course on the garbage collector, but here goes.

For reasons I won't pretend to be able to explain clearly and
concisely, the JVM treats the binary representation of classes (that
is to say, your code), and some ancillary data differently than it
treats ordinary objects that you allocate with 'new'. The space
available for this data is called the 'permanent generation', or
PermGen. it's a bit of a misnomer, since it can. in some
circumstances, be reused.

The important thing about PermGen space is that is is under separate
control from the ordinary heap. It doesn't matter what you set the
heap size to with -Xmx. -XX:MaxPermSize=xxxxx control the maximum.

Eclipse is very thirsty for permgen space because it uses OSGi. OSGi's
mission in life is to keep independent components independent. It does
this by creating many classloaders, and, in many cases, loading
exactly the very same class into many of them. Thus Eclipse, even
before you plugin in M2E, loads more classes, and so needs more
PermGen space, then an 'average' Java application.

Now throw Maven into the mixture. Here we have another device that
creates many class loaders so as to allow component isolation. More
PermGen space usage.

You are correct that my eclipse.ini is MacOS specific. All
eclipse.ini's are platform-specific. There are a number of resources
on the web (including a stackoverflow question or 10) that discuss
tuning eclipse.ini. I recommend that you find one, and see how to add
-XX:MaxPermGen and -XXPermGen to yours with generous numbers, and see
what you see.

YYMV, of course. XP is very long in the tooth, and you may be having
problems related to Mothra versus Godzilla (e.g. Microsoft versus
Snoracle) that have nothing to do with what I've written above.

Back to the top