GC overhead limit exceeded

xrax

Erfahrenes Mitglied
Hi all,

ich muss eine Menge an Daten in meinem JAVA-Programm verarbeiten.
Ab und an schmeist Java diese Fehlermeldung:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.Vector.ensureCapacityHelper(Vector.java:226)
at java.util.Vector.add(Vector.java:728)
at com.sun.rowset.CachedRowSetImpl.populate(CachedRowSetImpl.java:670)
at com.sun.rowset.internal.CachedRowSetReader.readData(CachedRowSetReader.java:178)
at com.sun.rowset.CachedRowSetImpl.execute(CachedRowSetImpl.java:782)
at basic.SQLBroker.getCachedResult(SQLBroker.java:72)
at api_import.product.UpDate.process(UpDate.java:63)
.
.
.

Nun dachte ich mir, ich könne das mit -Xmx1024 beheben. Aber da das Problem nur sporadisch auftritt kann ich nicht testen ob das hilft. Und genug Ahnung hab ich auch nicht. :-(

Darum die Frage:" Hilft -Xmx beim obigen Probelm überhaupt?"
Und ,- wie groß ist den der -Xmx-Wert aktuell ?

Besten Dank
xrax
 

xrax

Erfahrenes Mitglied
Eine erhöhung der Heapsize wird durchaus zur Lösung vorgeschlagen. Als default ist es wohl 64Mbyte.
Ich erhöhe diesen jetzt und hoffe das Beste.
 

vfl_freak

Premium-User
Moin,

na ja, womöglich hilft dies nur bedingt!

Es sollte beachtet werden, dass der "Garbage Collector", jener Systemprozess, der nicht mehr verwendeten Speicher im Heap wieder freiräumt, ineffektiver arbeitet je größer der Heap ist. Daher sollte der Heap-Anfangswert möglichst mit dem tatsächlich verwendeten Speicherverbrauch übereinstimmen. Ein Indikator für einen ineffektiv hohen Startwert ist, wenn
a) die Anwendung niemals mehr Heap als den eingestellten Startwert beansprucht,
b) der freie Speicherplatz innerhalb der VM unmittelbar nach Lauf des Garbage Collectors einen hohen Prozentsatz des verfügbaren Heaps ausmacht (>=80%), selbst nach längerer Laufzeit.
c) der Heap danach Minuten benötigt, um den freien Speicherplatz wieder aufzubrauchen bis der Garbage Collector erneut läuft
(Quelle: http://www.innovationgate.com/doc-w...stallation.installj2ee.knowledge.heap.de.html)

Prüfen kannst Du den Speicher mit dem Programm "jvisualvm.exe"! Sollte im bin-Verzeichnis der Java-Installation liegen oder hier runtergeladen werden:
http://visualvm.java.net/download.html

Erklärungen dazu:
https://blog.codecentric.de/2011/03/java-speicher-konfiguration-und-uberwachung-3-akt/

gruß
Klaus
 

Neue Beiträge