Ich führe eine GWT+Hibernate-Anwendung auf Glassfish 3.1 aus. Nach ein paar Stunden geht mir der Permgen-Speicherplatz aus. Dies geschieht ohne dass die Webapp neu geladen wird. Ich laufe mit –XX:MaxPermSize=256m –XmX1024m
.
Ich habe den Rat von diese Seite und festgestellt, dass ich Tonnen von Klassen - alle meine Hibernate-Modelle und alle meine GWT RequestFactory-Proxies - auslaufen lasse.
In dem oben erwähnten Leitfaden heißt es: "Überprüfen Sie die Ketten, finden Sie den versehentlichen Verweis, und beheben Sie den Code". Leichter gesagt als getan.
Der Classloader verweist immer zurück auf eine Instanz von org.glassfish.web.loader.WebappClassLoader
. Wenn ich weiter recherchiere, finde ich viele Referenzen von $Proxy135
und ähnlich benannte Objekte. Aber ich weiß nicht, wie ich sonst weitermachen soll.