TechDocs


   Rubrik > Software Entwicklung >

C++
Hibernate
Java
Spezifikation
Spring



    28.08.2013 15:57:30  Software Entwicklung    

Java Heap und Garbage Collection Einstellungen (JAVA_OPTS JVM ab Version 1.4)

JVM Optionen für Windows, UNIX und Linux (ab 1.4)

Eine komplette Speicherbereinigung in der Java Virtual Machine stoppt alle laufenden Threads. In diesem Zeitraum kann nichts verarbeitet werden. Wird diese Zeitspanne zu gross müssen die Garbage Collection Parameter den Eigenschaften der Anwendung angepasst werden.

Die Dauer der Garabage Collection kann durch Einsatz der parallelen undkonkurrierenden Collectoren und durch richtiges Anpassen der verschiedenenHeap Bereiche verringert werden.

Garbage Collection Ausgaben erzeugen

Die Option -verbose:gc gibt Informationen zu jeder Speicherbereinigung auf dieStandardausgabe aus.
Optionen:
  -verbose:gc
  -verbose:gc -XX:+PrintGCDetails

Beispiel:
  java -verbose:gc anwendung
  java -verbose:gc -XX:+PrintGCDetails anwendung

Das Format der Ausgabe ist vom jeweiligen Release der Java Plattform abhängig.

Heap Einstellungen für die verschiedenen Heap Bereiche New-, Old und Permanent Generation

New Generation

Optionen:
  -XX:NewSize=...
  -XX:MaxNewSize=...
  -XX:SurvivorRatio=...
<br/>Beispiel:
  java -Xms512m -Xmx512m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=2 anwendung

Old Generation (tenured)

Der Old Generation Heap verwaltet die langlebigen Objekte im Speicher. Diese werden aus dem New Generation Heap in den Old Generation Bereich verlagert.

Optionen:
  -Xms...m maximale Grösse

Beispiel:
  java -Xms512m programm

Permanent Generation (4 MB voreingestellt)

Dieser Heap Bereich verwaltet die Class Files und deren dazugehörige Meta-Informationen im Speicher.

Optionen:
  -XX:PermSize=... and -XX:MaxPermSize=...

Beispiel:
  java -Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m \
     -XX:SurvivorRatio=2 -XX:PermSize=64m -XX:MaxPermSize=64m program

Explizite Aufrufe des Garbage Collector ausschalten bzw. ignorieren (z.Bsp.: der System.gc(); Aufruf)

  -XX:+DisableExplicitGC einige Bibliotheken rufen System.gc()

RMI Garbage Collection Intervall einstellen

Folgende System Eigenschaften setzen das Intervall:

  -Dsun.rmi.dgc.client.gcInterval=60000
  -Dsun.rmi.dgc.server.gcInterval=60000

Mit JDK6 wurde das Intervall auf eine Stunde erhöht.

Garbage Collector Logging
Mit dem Kommando jstat lassen sich die Garbage Collection Aktivitäten in festen Zeitabständen ausgeben. Das folgende Kommando erzeugt alle 10s eineGarbage Collection Statistik.

  jstat -gcutil 10 1000000



Übersicht