tags:

views:

1843

answers:

8

I know what PermGen is, what it's used for, why it fails, how to increase it etc.

What I don't know is what PermGen actually stands for. Permanent... Gen... something?

Does anyone know what PermGen actually stands for?

+8  A: 

Permanent Generation. See the java GC tuning guide for more details on the garbage collector.

Dustin
+1  A: 

Permanent Generation.

The garbage collector is known as a Generational garbage collector. Long lived objects wind up in the Permanent Generation.

nsayer
This is not very true, I think. Permanent generation is for special kind of objects used by the JVM (class objects, method objects). Regular objects are never promoted to this generation, AFAIK.
Ivan Dubrov
The above comment is correct; the permanent generation is for types that are considered to be "permanent", rather than just very long-lived.Of course this doesn't stop it being populated by classes, which can get collected if a classloader becomes unreachable.
Calum
Yup, this answer is talking about the tenured generation.
Tom Hawtin - tackline
+3  A: 

Permanent generation

Rob Kennedy
+3  A: 

If I remember correctly, the gen stands for generation, as in a generational garbage collector (that treats younger objects differently than mid-life and "permanent" objects). Principle of locality suggests that recently created objects will be wiped out first.

Uri
+4  A: 

PermGen stands for Permanent Generation.

Here is a brief blurb on DDJ

Michael Easter
+3  A: 

Good description from the guy who knows a lot about GC internals. There are a plenty of useful GC-related info in his blog, by the way.

Ivan Dubrov
+2  A: 

Permanent Generation. Details are of course implementation specific.

Briefly, it contains the Java objects associated with classes and interned strings. In Sun's client implementation whith sharing on, classes.jsa is memory mapped to form the initial data, with about half read-only and half copy-on-write.

Java objects that are merely old are kept in the Tenured Generation.

Tom Hawtin - tackline
+2  A: 

Unfortunately, the answer chosen is wrong. PermGen is used by the JVM to hold loaded classes. You can increase it using:

-XX:MaxPermSize=384m

if you're using the Sun JVM

So if you get an OutOfMemoryException: PermGen you need to either make PermGen bigger or you might be having class loader problems.

bajafresh4life