Memory Leaks vorbeugen

Effective Java: WeakReferences

Klaus Kreft, Angelika Langer

Der vorangegangene Teil dieser Reihe zu Memory Leaks in Java ging der Frage nach, wie Memory Leaks entstehen und mit welchen Techniken und Tools man nach ihnen suchen kann. Dieses Mal wollen wir uns WeakReferences genauer ansehen. Mit ihrer Hilfe ist es möglich, Situationen zu vermeiden, in denen Memory Leaks entstehen können.

Gehen wir noch einmal zurück zu dem Beispiel eines Memory Leaks, das wir ausführlich im ersten Artikel zum Thema Memory Leaks diskutiert haben. In dem Beispiel haben wir einen rudimentären Server auf Basis der mit Java 7 eingeführten AsynchronousSocketChannels implementiert. Das Memory Leak entstand dadurch, dass wir im Server für jeden neuen Client Verwaltungsinformationen in einer Map gespeichert und diese clientspezifischen Map-Einträge nicht nach der Beendigung der Kommunikation mit den jeweiligen Clients wieder gelöscht haben. Es ist offensichtlich, dass sich die Map mit jedem neuen Client vergrößert. Erzeugt man also in einem Testprogramm viele Clients hintereinander, so stürzt der Server irgendwann mit einem OutOfMemoryError ab.

Geschrieben von
Klaus Kreft
Klaus Kreft
  Klaus Kreft arbeitet selbstständig als Consultant und Trainer. Kontakt: http://www.AngelikaLanger.com.
Angelika Langer
Angelika Langer
  Angelika Langer arbeitet selbstständig als Trainer mit einem eigenen Curriculum von Java- und C++-Kursen. Kontakt: http://www.AngelikaLanger.com.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.