Heap-Auslasung verdoppelt sich schlagartig

HalbBit

Neues Mitglied
Hallo
Bei meinem aktuellen Projekt geht mir nach einiger Zeit der Heap-Speicher aus. Bei der Analyse ist mir aufgefallen, dass anscheinend irgendwelche Ereignisse den Heap vollmüllen. Im angehängten Bild ist dieses Verhalten schön zu erkennen. Ich kann mit ziemlicher Sicherheit ausschließen, dass der Trigger für diesen Sprung aus meinem Programm kommt. Der Speicher wird nicht wieder freigegeben. Hab's auch schon erfolglos mit System.gc() versucht.
In verschiedenen Aufzeichnungen konnte ich ähnlich, kleinere Sprünge feststellen, die anscheinend durch Ereignisse wie einen einsetzenden Bildschirmschoner oder Verbinden per RDP ausgelöst werden.

Kennt jemand ein solches Verhalten und kann mir das erklären? Wie kann man das vermeiden, bzw. kriegt den Speicher wieder frei?

Das Programm lauft unter JRE7 32Bit auf einem Windows7- Rechner.

Schon mal vielen Dank für die Hilfe.
 

Anhänge

  • Tenured gen 2013125.PNG
    Tenured gen 2013125.PNG
    98,5 KB · Aufrufe: 30
Zuletzt bearbeitet:

anti-held

Bekanntes Mitglied
Klingt nach einem Memory Leak.
Der Garbadge Collector von Java entfernt nur die Objekte wieder aus dem Heap,
auf die keine Referenzen mehr vorhanden sind.
Wird also möglicherweise schlampig programmiert, könnten hier noch Referenzen
bestehen.
Diese würden dann die Freigabe des Speichers verhindern.
 

VfL_Freak

Top Contributor
Moin,

Klingt nach einem Memory Leak.
Der Garbadge Collector von Java entfernt nur die Objekte wieder aus dem Heap,
auf die keine Referenzen mehr vorhanden sind.
Wird also möglicherweise schlampig programmiert, könnten hier noch Referenzen
bestehen.
Diese würden dann die Freigabe des Speichers verhindern
Das ist zwar grundlegend richtig, erklärt aber nicht den sprunghaften Anstieg an den zwei Stellen!

Hinzu kommt, das ein händischer Aufruf von "System.gc()" nur eine Art Empfehlung ans System ist .... er garantiert nicht, dass betroffener Speicher aus wirklich freigegeben wird!
Eigentlich sollte man dies auch nie händisch aufrufen (müssen), so denn sauber programmiert wurde ;)

@TO :
es gibt da noch den freien Profiler "Java VisualVM" (Home ? Project Kenai). Dieser ist deutlich leistungsfähiger. Damit kannst Du an den betroffenen Stellen per snapshot sehen, welche Aufrufe diese sprunghaften Anstiege verursachen!

Gruß
Klaus
 
Zuletzt bearbeitet:

HalbBit

Neues Mitglied
Hallo
Ich will nicht ausschliessen, dass mein Code nicht optimal ist. Es ist mein erstes größeres Java-Programm.
Bei einem klassischen Memory Leak ist ein konstanter Anstieg der Speicher-Auslastung zu sehen. Auch die Erfahrung habe ich schon gemacht. Wie in der Grafik zu sehen ist, läuft das Programm aber über 24 Stunden mit nahezu konsanter Speicherauslastung. Während der Aufzeichnung waren 15 Threads aktiv, die im 0,5 Sekunden-Takt Objekte erzeugt und (hoffentlich) wieder freigegeben haben. Zum Zeitpunkt der Sprünge führt das Programm keine anderen Ereignisse aus als in den Stunden davor oder danach. Dann kommt der Sprung, der die Speicherbelegung fast verdoppelt. Es sind diese Sprünge, die mich 'umbringen' und die ich mir nicht erklären kann.

@VFL_Freak: Danke für den Tip. Das Programm hab ich schon im JDK entdeckt. Jetzt muss ich nur noch lernen damit umzugehen. ;-)

Grüße,
Olaf
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Ist Off-Heap-Speicher dasselbe wie Stack-Speicher? Java Basics - Anfänger-Themen 2
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
KogoroMori21 Stack und Heap Speicher Java Basics - Anfänger-Themen 1
G Min und Max heap Java Basics - Anfänger-Themen 1
M Java heap space Fehlermeldung beheben Java Basics - Anfänger-Themen 3
F speicherort stack oder heap Java Basics - Anfänger-Themen 1
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
P Stack, Heap Java Basics - Anfänger-Themen 13
G Heap Space erhöhen (64bit) Java Basics - Anfänger-Themen 45
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
V Heap-Sort Java Basics - Anfänger-Themen 0
M Frage zu Stack und Heap Java Basics - Anfänger-Themen 1
M Java Arbeitsspeicherverbrauch, Heap Space error korrigieren? Java Basics - Anfänger-Themen 18
H Heap Java Basics - Anfänger-Themen 4
D Java Heap Space Probleme Java Basics - Anfänger-Themen 7
B Stack/Heap Frage Java Basics - Anfänger-Themen 36
C Warning: Type safety: Potential heap pollution via varargs parameter array Java Basics - Anfänger-Themen 5
S Input/Output Java heap space Java Basics - Anfänger-Themen 8
W Compiler-Fehler "Could not reserve enough space for object heap"... und dann raucht das Programm ab Java Basics - Anfänger-Themen 3
B OOP Zwei gleichnamige Objekte auf dem heap Java Basics - Anfänger-Themen 4
H Heap Java Basics - Anfänger-Themen 2
A Java heap space Java Basics - Anfänger-Themen 11
T Out of Memory (Java Heap Space) Java Basics - Anfänger-Themen 9
B Heap-Speicher wieder freigeben Java Basics - Anfänger-Themen 10
D java heap space Java Basics - Anfänger-Themen 6
S Java Heap space trotz -Xmx1024 Java Basics - Anfänger-Themen 10
N Heap Dump Java Basics - Anfänger-Themen 23
C 'OutOfMemoryError: Java heap space' Java Basics - Anfänger-Themen 5
E ternärer Heap in Array-Form Java Basics - Anfänger-Themen 6
L heap space, LinkedList umspeichern Java Basics - Anfänger-Themen 15
E begrenzung des platzes im heap Java Basics - Anfänger-Themen 4
D java.lang.outofmemoryerror java heap space bei Hashtable Java Basics - Anfänger-Themen 3
G Frage zur Heap-Belegung Java Basics - Anfänger-Themen 2
neurox java.lang.OutOfMemoryError: Java heap space Java Basics - Anfänger-Themen 18
B java.lang.OutOfMemoryError: Java heap space bei Musikplayer Java Basics - Anfänger-Themen 7
M Java Heap Space durch Übergang von einer Klasse in die ander Java Basics - Anfänger-Themen 3
N Applet Heap vergrößern Java Basics - Anfänger-Themen 10
G warum heap space problem? Java Basics - Anfänger-Themen 6
G heap size vergrößern Java Basics - Anfänger-Themen 6
S memory heap problem Java Basics - Anfänger-Themen 9
V warum heap space überlastung Java Basics - Anfänger-Themen 2
G error wegen heap space Java Basics - Anfänger-Themen 4
M Beadarf ermitteln für Java heap space Java Basics - Anfänger-Themen 4
M Dateien lesen/schreiben und Heap Space Probleme Java Basics - Anfänger-Themen 8
G Aktuelle Heap-Größe auslesen? Java Basics - Anfänger-Themen 3
G Aus Array einen Heap erstellen Java Basics - Anfänger-Themen 5
D suchbaum out of heap space Java Basics - Anfänger-Themen 8
D Heap erweitern Java Basics - Anfänger-Themen 3
R Java heap space Java Basics - Anfänger-Themen 4
E Heap Size einstellen Java Basics - Anfänger-Themen 7
S OutOfMemoryError: Java heap space Java Basics - Anfänger-Themen 6
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
M Java Heap Space während der Laufzeit ändern Java Basics - Anfänger-Themen 2
E fehlermeldung "java heap space" Java Basics - Anfänger-Themen 21
E wieviele objekte am heap?? Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben