Speicherlöcher und GC
Wichtige Tools und Links
- Troubleshooting Memory Leaks
jmap -permstat 29620
and howto enable it in Linux- Memory Leak Protection in Tomcat
- PermGen Space Problems
- Find PermGen leak with jvisualvm
- Tracking down PermGen Space problems
- Dynamic created Classes as source of leaks
- Tips and Tricks for Java Heap Dumps
In Nuclos gefundene, wichtige Ursachen für PermGen Space Probleme
- Mehr als ein JAXBContext. Lösung: spring-oxm verwenden und dadurch sicherstellen, dass nur ein JAXBContext im Spiel ist (siehe
org.springframework.oxm.jaxb.Jaxb2Marshaller
) - Groovy dynamische erzeugte Klassen. Lösung: Dynamische erzeugte Klassen cachen und wieder verwenden. Von Groovy Scripten stets zunächst Klassen erzeugen (und auch diese cachen).
- Java
Serializable
: In Nuclos wird über Spring RPC die Serialisierung exzessiv genutzt. Daher werden viele Java interne Accessor Klassen dynamische erzeugt (u.a.sun.reflect.GeneratedSerializationConstructorAccessor
). Lösung: unbekannt.
Generated Accessors (sun.reflect.GeneratedSerializationConstructorAccessor
u.ä.)
Eine detaillierte Beschreibung des Problem liefert dieser garbage collection Artikel. Atlassian schlägt in Unloading GeneratedMethodAccessor vor, die durch VM Optionen sicherzustellen, dass Klassen auch GC'ed werden. Eine weitere Diskussion findet sich hier.
Nicht-kommerielle Tools
Eclipse MemoryAnalyzer
Tool, um Java Heap Dumps (hprof) zu lesen und zu analysieren.Verwendung: Import -> Heap Dump... . Es gibt zusätzlich eine eigene Eclipse Perspective.
Kommerzielle Java Profiler
Überblick
Inhalte