18. Dezember 2008

Garbage Collector und Sun´s VM

Folgende GarbageCollectors gibt es bei der Sun VM (Hotspot):

1. serial:
-XX:+UseSerialGC
Besonders sinnvoll
  • bei einer CPU
  • nicht speicherlastigen Anwendungen
JMX: Copy (2 Gen) und MarkSweepCompact (6 Gen)


2. throughput collector:

-XX:+UseParallelGC
Verwendet mehrere Threads für die Minor GC. Schlechtere Performance bei 1 CPU, gleiche Performance bei 2 CPUs wie seriell, bessere Performance ab 3 CPUs zu erwarten. (Die Anzahl der Threads kann über -XX:ParallelGCThreads=[anzahl] gesteuert werden).

Besonders sinnvoll
  • wenn es auf Leistung ankommt (CPU-lastige Anwendungen)

JMX: PS Scavenge (2 Gen) und PS MarkSweep (4 Gen)


3. concurrent low pause collector:
-XX:+UseConcMarkSweepGC
Versucht große Teile der Major GC parallel mit den Applikations-Threads zu machen. Braucht dadurch etwas mehr CPU. Sinnvoll ab 2 CPUs.

Besonders sinnvoll
  • wenn es auf kurze Stopzeiten durch den GC ankommt.
  • wenn viele Daten lang im Speicher gehalten werden (z.B. Katalogdaten, Caches, etc.)
JMX: ParNew (2 Gen) und ConcurrentMarkSweep (4 Gen)


Anmerkung: Die Sun VM kann den GarbageCollector dynamisch ändern, wenn nichts explizit angegeben wird.

Links mit Detailinfos:
Alle VM Options der Sun VM
GC Tuning Java SE 5
GC Tuning Java SE 6

Keine Kommentare: