/ Błąd przestrzeni / PermGen podczas działania aplikacji - java, tomcat, permgen

Błąd przestrzeni kosmicznej podczas działania aplikacji - java, tomcat, permgen

Moja aplikacja internetowa działa na tomcat apache-tomcat-6.0.35 i działała bez żadnych problemów, ale dzisiaj pokazuję poniżej wyjątek w dzienniku catalina.out i nie mogłem zalogować się do systemu.

Jul 9, 2013 2:40:15 PM org.apache.coyote.http11.Http11Processor process
SEVERE: Error processing request
java.lang.OutOfMemoryError: PermGen space

Miałem wrażenie, że może to być wyjątekpowstaje podczas wdrażania lub ponownego wdrażania aplikacji. Ale dostałem to, gdy aplikacja działa bez żadnych problemów. Co mogłoby być tego przyczyną. Miła Rada

Odpowiedzi:

2 dla odpowiedzi № 1

Każda aplikacja internetowa w Tomcat ma osobny moduł ładujący klasyz osobnym zestawem załadowanych klas. Kiedy uruchamiamy Tomcat, nie ładuje on wszystkich klas wszystkich swoich aplikacji naraz, ale raczej ładuje aplikacje leniwie. Gdy aplikacja staje się aktywna, zaczyna ładować swoje klasy i może się zdarzyć, że w JVM zabraknie przestrzeni permgenowej. Oznacza to, że może się to zdarzyć nawet bez ponownego wdrażania aplikacji.


1 dla odpowiedzi nr 2

dodaj te Opcje do JVM linia poleceń kiedy Tomcat jest uruchomiony Lub dodaj do IDE VM Options

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

LUB

-XX:MaxPermGen=128M

1 dla odpowiedzi nr 3

Wygląda na to, że jedna z twoich aplikacji internetowych zużywa dużo pamięci. Czy próbowałeś zwiększyć rozmiar PermGen? W $ CATALINA_HOME / bin / catalina.sh możesz dodać

-XX:PermSize=512m -XX:MaxPermSize=512m

do JAVA_OPTS, aby przydzielić wystarczającą ilość miejsca do uruchomienia.


1 dla odpowiedzi nr 4

Wychodzisz z miejsca permGen, spróbuj zmienić te parametry w skrypcie startowym tomcat

/etc/init.d/tomcat6

JAVA_OPTS="-Djava.awt.headless=true -XX:MaxPermSize=512M"

Ustaw ilość pamięci według potrzeb.


1 dla odpowiedzi nr 5

To zdecydowanie błąd, który często się pojawiapodczas wdrożeń. Widziałem to wielokrotnie w aplikacjach Grails i Java. Możesz zwiększyć przestrzeń permgenową, dostosowując parametr uruchamiania JVM -XX: MaxPermSize, tj .:

-XX:MaxPermSize=256m

Wątek szczegółowo omawia ten problem: Wątek


1 dla odpowiedzi № 6

Miałem ten błąd kilka dni temu. Naprawiłem to przez ponowne uruchomienie prawdziwej maszyny - wystąpił problem z wdrożeniem.

Możesz to również naprawić, dodając

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=utf-8
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

Widzieć możliwa poprawka