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?
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?
Permanent Generation. See the java GC tuning guide for more details on the garbage collector.
Permanent Generation.
The garbage collector is known as a Generational garbage collector. Long lived objects wind up in the Permanent Generation.
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.
PermGen stands for Permanent Generation.
Here is a brief blurb on DDJ
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.
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.
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.