Perm Gen stands for permanent generation.
It is the space on Java Heap that holds meta-data describing user classes (classes that are not part of the Java language).
Examples of such meta-data are objects describing classes and methods and they are stored in the Permanent Generation.
Applications with large code-base can quickly fill up this segment of the heap which will cause
java.lang.OutOfMemoryError: PermGen no matter how high your
-Xmx (maximum size of the memory allocation pool) and how much memory you have on the machine.
Happy Learning! 😇