Apache Tomcat PermGen Space Hatası ve Memory Ayarları

Tomcat varsayılan bellek limitleri bir süre sonra bellekte ve java byte kod işletiminde hataya yol açacaktır. Bu sebeple tomcat kurulumundan sonra projenin ve sunucu bellek miktarının göz önünde tutularak aşağıdaki satırın tomcatdir/bin/setenv.sh adında bir dosya içeriğinde bulunması gerekmekte.

export JAVA_OPTS="-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m"

Windows sunucuda(!) tomcat çalıştırma durumuna düşerseniz platform olarak birbirlerini hiç sevmeseler de  (ya da sevmesem de)

tomcatdir/bin/setenv.bat

dosyasını oluşturup

set JAVA_OPTS=-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m

olarak parametreleri yazmak yeterli.

Ek Bilgi ve Güncelleme:
Class meta data depolama ve permanent generation konusunda JDK 8 ile değişiklik yapılarak native memory alanına taşındığı için permGen parametresinin set edilmesine JDK8 üzerinde çalışan sunucularda gerek kalmıyor. Ayrıca bu parametrenin gözönüne alınmadığına dair bir mesaj da sunucuda başlangıçta loglara düşüyor.
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458
This project will remove the permanent generation from the hotspot heap.  Doing
so removes the need for tuning the size of the permanent generation and also
allows an implementation that is more amenable to the concurrent collection of
the meta data. This project will move the contents of the permanent generation
either to the Java heap or to native memory.
Written on April 10, 2014