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

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

Add Comment

BBCode format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA