Nehmen wir den Fall, ich habe eine Java Servlet Application, welche zu 100% Memory Leaks hat, die ich entfernen möchte, wobei eigentlich möchte ich die Application nur performanter machen.
Es gibt folgende Möglichkeiten die Performance zu optimieren:
A) Memory Leaks entfernen
B) optimales Feintuning der VM + Garbage Collector
ad A) Hat jemand schon mal eine der folgenden SoftwareLösungen getestet und kann mir eine empfehlen?
- Quest Software's JProbe Suite
- Borland's Optimizeit Enterprise Suite
- Paul Moeller's Win32 Java Heap Inspector
- IBM alphaWorks' Jinsight
ad B) Welche Möglichkeiten habe ich um an der VM herumzuschrauben?
(Dass ich meinen Tomcat Server in der catalina.bat spezielle Einstellungen bezüglich des erlaubten Speicherverbrauchs für die VM mitgeben kann, weiß ich)
Wie kriege ein feintuning für den GC hin?
(So dass er aber auch noch kostengünstig auf einem Host/Großrechner läuft)
Stimmt es, dass die VM folgendermassen arbeitet:
Memory wird voll -> Gegenmassnahme: Mehr Speicher anfordern
Memory wird wieder voll und kein weiterer Speicher laut den VM Settings zulässig -> Gegenmassnahme: GC wird aktiviert (ja, erst jetzt wird er aktiviert)
Memory wird abermals voll -> Gegenmassnahme: Mehr Speicher vom System anfordern
Memory wird abermals voll -> Gegenmassnahme: "Absturz" mit der Fehlermeldung "bla bla bla, Java hat nicht genug Arbeitsspeicher zur Verfügung (oder so ähnlich)"