Skip to content

Achtung Java: Memory Leaks durch Thread Objekte (Lösung)

Nach meiner Quizzfrage gab es einige Diskussionen über das Problem. Meine Analyse fand ein Problem im Konstruktur der Klasse Thread. Wannimmer ein Thread Objekt erzeugt wird, registriert es sich an der zugehörigen (aktuellen) ThreadGroup. Das hat den Effekt dass eine Referenz auf den Thread gehalten wird, das Objekt wird nie frei gegeben. Gitta Zahn und Steffen Ramlov haben das Problem sofort gefunden, Stefan Matthias Aust hat darauf hingeweisen, dass aktuelle Java Versionen (1.5 und 1.6) dieses Problem nicht mehr haben, dort wird der vorbereitete Thread nicht zu einer Liste hinzugefügt. Details dazu in de.comp.lang.java. Unabhängig davon ist es aber generell ein schlechtes Design von Thread zu erben, insbesondere wenn man plant den Thread nicht zu starten. Das Runnable Interface hat hier deutlich weniger Seiteneffekte, und man ist wesentlich flexibler mit der Erzeugung und dem Pooling der Threads.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Pavatar, Gravatar, Favatar, Twitter, Identica, Identicon/Ycon Autoren-Bilder werden unterstützt.
Formular-Optionen