Memory-Leak in BlockingQueue

qwer1234

Mitglied
Servus,

Ich hätte mal wieder eine Frage:
Ich habe einen Server-Thread, der mir Daten produziert und einen Client der diese dann abholt. Das ganze funktioniert mittlels einer eigenen Queue, die intern eine ArrayBlockingQueue verwendet.

Bricht jetzt während des Produzierens der Client weg, produziert der Server bis die Queue voll ist (ich verwende put zum belegen) und dann steht er im await() der ArrayBlockingQueue.

Damit meine Queue irgendwann garbageCollected werden kann hab ich sie nur weak referenziert.
Wird diese nun tatsächlich irgendwann collected, bleibt die interne ArrayBlockingQueue aber stehen und ebenso der Server-Thread.
kann ich irgendwie dafür sorgen, dass sowohl die ArrayBlockingQueue als auch mein ProducerThread aufgeräumt werden ohne dass ich von put abweiche?

Vielen Dank schon mal
 
T

tuxedo

Gast
Sieht so aus als ob deine Datenstruktur nicht passt. Was du brauchen könntest ist ein FIFO (FirstInFirstOut) der, wenn er voll ist, die ältesten Einträge überschreibt. Würde das nicht dem GC überlassen...
 

Empire Phoenix

Top Contributor
Damit meine Queue irgendwann garbageCollected werden kann hab ich sie nur weak referenziert. o_O
Das ist aber fail, das heist wenn wenig ram zur verfügung ist/ full gc läuft werden dir die daten unterm ***** weggeschossen obwohl noch nen client da ist.

Was soll den passieren in so einem fall?
Der server weiterlaufen und die ältesten daten überschreiben? -> sieh über mir

Der server nicht blockieren aber die daten so lassen? -> nicht put nehmen sondern offer
The offer method inserts an element if possible, otherwise returning false.


Der server nicht blockieren und alle Daten lösen? -> offer und clear wenn false returnt.
 
Zuletzt bearbeitet:

qwer1234

Mitglied
So, ich hab das ganze jetzt intern auf offer umgestellt.
Java:
while (!blockingQueue.offer(e, 1, TimeUnit.SECONDS)) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                // ignore

            }
        }

Die Idee war jetzt, da nur noch 2 WeakReferences auf meine Queue bestehen kann das ganze dann garbage collected werden, da ich auch nicht mehr gelockt in der ArrayBlockingQueue hängen bleibe.
Oder kann ich immer noch nicht aufgeräumt werden, weil ich in der Klasse selber festhänge?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Memory Leak!!! Allgemeine Java-Themen 7
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
E Java Shared Memory? Allgemeine Java-Themen 6
B Java Sound Memory Overload Allgemeine Java-Themen 0
P Memory Editing mit JNA, tutorial? Allgemeine Java-Themen 3
E Zweidimensionales Array Integer[10 000][10 000] -> out of memory? Allgemeine Java-Themen 4
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
T Java Memory Puzzle Allgemeine Java-Themen 6
H jni memory problem Allgemeine Java-Themen 8
dayaftereh JVM Memory Usage Allgemeine Java-Themen 5
Z Schwankung "Total Memory"? Allgemeine Java-Themen 8
L Methode "Neues Spiel" für Memory Allgemeine Java-Themen 2
L Brauche Hilfe bei Memory Programmierung Allgemeine Java-Themen 2
H Tomcat VM out of memory Allgemeine Java-Themen 7
M File im memory erzeugen Allgemeine Java-Themen 5
P Java Memory Leaks Allgemeine Java-Themen 12
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
C ArrayList Out of Memory Allgemeine Java-Themen 28
P out of memory -> heap wächst und wächst Allgemeine Java-Themen 7
J RAM freimachen mit KOmprimiertem in-memory-swap Allgemeine Java-Themen 7
S BlockingQueue mit dynamischer Anpassung der Anzahl von Producer und Consumer Threads Allgemeine Java-Themen 1
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
D Datenstruktur .. BlockingQueue (LIFO) Allgemeine Java-Themen 3
S BlockingQueue mit maximaler Groesse 1? Allgemeine Java-Themen 5
L Java Thread [blockingqueue] hängt sich auf Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben