# JVM Startparameter für PermGen



## oltoko (3. Dez 2008)

Hallo,

ich versuche gerade, da ich öfter Probleme mit dem PermGen habe, diesen beim Start des Geronimo Servers gleich auf 256, oder sogar 512 MB zu setzen. Leider musste ich jetzt feststellen, dass die JVM mit der Option MaxPermSize anscheinend nichts anfangen kann. Beim Ausführen von


```
java -XX:MaxPermSize=512m -jar "C:\geronimo-tomcat6-javaee5-2.1.3\lib\boot\gshell-bootstrap.jar"
```

bekomme ich den Fehler: _"Unrecognized VM option '' Could not create..."_. Was ich nicht ganz verstehe, da dieser Startparameter auch auf der Sun-Seite für VM Optionen angegeben wird. Mache ich bei meinem Aufruf etwas falsch??

Ich habs probiert mit der jre & jdk jeweils Version 1.6.0_04

Mfg
Olli


----------



## Wildcard (3. Dez 2008)

oltoko hat gesagt.:
			
		

> Ich habs probiert mit der jre & jdk jeweils Version 1.6.0_04


Sicher? was sagt java -version?


----------



## oltoko (3. Dez 2008)

Wildcard hat gesagt.:
			
		

> Sicher? was sagt java -version?



Okay, mein Fehler. Nach Updates 1.6.0_10


----------



## Wildcard (3. Dez 2008)

Update 10 ist ja schon mehr ein major als ein minor Release. Versuch mal mit einer älteren Version, eventuell ist der Parameter entfernt worden.


----------



## oltoko (3. Dez 2008)

In der Doku die ich angegeben habe, steht aber auch beim Parameter dabei _...5.0 and newer..._.
Jedoch ist da von einer Java HotSpot VM die rede... Wenn ich ehrlich bin hab ich keine Ahnung was das sein soll  !! Eigentlich bin ich davon ausgegangen, da in diversen Foren mein Problem schon öfters im Ähnlichen Kontext behandelt wurde, dass dies mit der "nomalen" JVM ohne weiteres Funktionieren würde. Da ja auch der Geronimo nach seinem Start von dem 65 MB verfügbaren PermGenSpace schon 50 MB benutzt sollte man auch meinen das mehr Menschen Probleme haben wenn sie auf JavaScript (Ajax) basierte Web-Projekte in einem Geronimo Server laufen lassen. Weil wenn wir ehrlich sind, wem langen schon 15 MB in einem WebServer?


----------



## Wildcard (3. Dez 2008)

oltoko hat gesagt.:
			
		

> Weil wenn wir ehrlich sind, wem langen schon 15 MB in einem WebServer?


Es geht ja nicht um den Heap, sondern den Perm Space.
Hast du es nun mit einer älteren Version versucht? Diese inoffiziellen Parameter kommen und gehen wie es sun beliebt.


----------



## oltoko (3. Dez 2008)

Jap, das selbe spiel.  ???:L


----------



## maki (3. Dez 2008)

Was ist mit

-XXermSize=512m

Den Wert halte ich persönlich für zu hoch.


----------



## Wildcard (3. Dez 2008)

Also ich weiß das 256m noch funktioniert, aber 512 kam mir auch sehr viel vor.


----------



## maki (3. Dez 2008)

Ja, 256MiB lief auch bei mir (Tomcat Server mit einer Uralt Anwendung, Java 1.5), man müsste zB. schon sehr viele Klassen laden um 512MiB voll zu bekommen.

Aber das eigentliche Problem war ja das Java 6 den MaxPermSize nicht mehr kennt(?), zumindest wenn man der Fehlermeldung traut.


----------



## oltoko (3. Dez 2008)

maki hat gesagt.:
			
		

> Was ist mit
> 
> -XXermSize=512m
> 
> Den Wert halte ich persönlich für zu hoch.



Ich habs jetzt mal mit:


```
-XX:MaxPermSize=256m -XX:PermSize=128m
```

probiert. Das selbe Spiel  :bahnhof:. Wobei ich auch den Fehler ein bisschen unverständlich finde. _Unrecognized VM option ''_. Ich habe das empfinden das zwischen den zwei Hochkommatas ja jetzt eigentlich stehen müsste was er nicht versteht. In dem Fall also _MaxPermSize..._.
Ich habe jetzt mir auch nochmal die Doku zuu 1.6 durchgeschaut und tatsächlich scheint, wie wildcard schon erwähnt hat, diese Option von Release zu Releas nicht frei von tiefgreifenden Änderungen zu sein.


			
				Sun hat gesagt.:
			
		

> Options that are specified with -XX are not stable and are not recommended for casual use. These options are subject to change without notice.


.

Mmmh.... ich sags mal so, zur Zeit läuft der Server, solang man nicht das Projekt neu deployed. Jedoch, so gewinne ich auf jeden fall den Eindruck wenn ich mir die JVM des Geronimo mit jconsole anschaue, dass der PermSpace kontinuierlich steigt und deswegen die Gefahr besteht, daß mir alles einfach nach einer oder zwei Wochen abschmiert. Natürlich liegt der eigentliche Fehler, dass der PermGen wächst, an dem Framework das ich verwende (RAP), jedoch fehlt mir erstens das KnowHow um so weitgreifende Änderungen daran vorzunehmen und zweitens ist das ja auch der Job der eigentlichen Entwickler, alle Ressourcen wieder sauber freizugeben, oder zumindest so zu hinterlassen, dass der GC dies tun kann.


----------



## FArt (3. Dez 2008)

maki hat gesagt.:
			
		

> Ja, 256MiB lief auch bei mir (Tomcat Server mit einer Uralt Anwendung, Java 1.5), man müsste zB. schon sehr viele Klassen laden um 512MiB voll zu bekommen.



Die PermSize geht z.B. in Enterprise-Umgebungen gerne aus, wenn die Umgebung ein Feature wie "HotReDeployment" unterstützt. Hier kann es passieren, das über bestimmte Konstruke Klassen immer referenziert bleiben und somit nie vom GC weggeräumt werden. Dann wächst mit jedem Redeployment die Klassenanzahl (nur durch vermeintliche "Duplikate" ungebremst an...

Aber ob es einfach zu viele Klassen sind oder ein Fehler wie gerade beschrieben vorliegt: ein halbes Gig ist sehr wahrscheinlich übertrieben. In dem einen Fall wird die Grenze nie erreicht, in dem anderen Fall ist die Erhöhung des Speichers keine Lösung ;-)


----------



## maki (3. Dez 2008)

Stimmt FArt, das ist natürlich ein Szenario in dem sich der PermGen schnell füllt.

 :toll: 

@oltoko

Lass doch mal die MaxPermSize weg, vielleciht hilfts, ansonsten würde ich nochmal die JAVA_OPTS (oder war es die JAVAOPTS?) Umgebungsvariable probieren und normal starten.


----------



## oltoko (3. Dez 2008)

maki hat gesagt.:
			
		

> Lass doch mal die MaxPermSize weg, vielleciht hilfts, ansonsten würde ich nochmal die JAVA_OPTS (oder war es die JAVAOPTS?) Umgebungsvariable probieren und normal starten.



Genau, die JAVA_OPTS ist das. Die hab ich schon seit längerem gesetzt, nur habe ich mich gewundert warum mir die jconsole nie den Wert angezeigt hat, den ich dort vergeben habe. Deswegen hab ich mir aus der batch Datei, mit der ich normal den Geronimo starte, mal den aufruf von oben rauskopiert um diesen einfach mal über die Konsole zu versuchen. Nur dann, wird mir der erwähnte Fehler angezeigt.
Ich werds jetzt mal einfach dabei belassen und das von FArt angesprochene _"HotReDeployment"_ vermeiden und hoffen dass alles stabil läuft  .

Achja, nur noch nebenbei. Unter Linux wird die JVM Fehlermeldung richtig ausgegeben: _Unrecognized VM option 'PermSize=128m'_[/code]


----------



## Wildcard (3. Dez 2008)

vielleicht stimmt etwas mit deinem Script nicht. Start mal von Hand.


----------



## maki (3. Dez 2008)

Hab mir auch schon öfters Probleme eingehandelt wenn ich die Startskripte geändert habe, war immer ein gefummel.


----------



## oltoko (3. Dez 2008)

Ich starte ja schon die ganze Zeit von Hand. Und in das Script habe ich auch nur reingeschaut um zu schauen, wie das dort aufgerufen wird.


----------

