Speicherlöcher und GC

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

  • Keine Stichwörter