Memory Leaks in Java
Von Angelika Langer und Klaus Kreft
()
Über dieses E-Book
diskutieren, wie es zu Memory Leaks in Java kommen kann und wie man sie finden oder besser schon von vorneherein vermeiden kann. Im ersten Kapitel des shortcuts
wird erläutert, dass Memory Leaks durch im Programm "vergessene" Objekte entstehen, die der Garbage Collector aber weiterhin als erreichbar identifiziert und nicht wegräumt. Zudem soll deren mögliches Aussehen gezeigt werden. Die Kapitel 2 und 3 verhandeln weitere Memory-Leak-Situationen, allgemeine
Lösungsansätze für Leaks (z. B. Weak References), und Techniken, wie man Memory Leaks suchen kann.
Mehr von Angelika Langer lesen
shortcut Java Core Programmierung: Memory Model und Garbage Collection Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnlich wie Memory Leaks in Java
Titel in dieser Serie (100)
Algorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Bewertung: 0 von 5 Sternen0 BewertungenNFC: Near Field Communication für Android-Entwickler Bewertung: 5 von 5 Sternen5/5Einstieg in Google Go Bewertung: 0 von 5 Sternen0 BewertungenHTML5 Security Bewertung: 0 von 5 Sternen0 BewertungenIT Wissensmanagement: Theorie und Praxis Bewertung: 0 von 5 Sternen0 BewertungenSharePoint-Entwicklung für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenF#: Ein praktischer Einstieg Bewertung: 0 von 5 Sternen0 BewertungenSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Bewertung: 0 von 5 Sternen0 BewertungenUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Bewertung: 0 von 5 Sternen0 BewertungenGeolocation mit PHP: Foursquare-API, Google Places & Qype Bewertung: 0 von 5 Sternen0 BewertungenServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Bewertung: 0 von 5 Sternen0 BewertungenTitanium Mobile: Multi Platform Apps mit JavaScript Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Bewertung: 0 von 5 Sternen0 BewertungenUX Design für Tablet-Websites: Ein Überblick Bewertung: 0 von 5 Sternen0 BewertungenJavaScript auf dem Server Bewertung: 0 von 5 Sternen0 BewertungenJava 7: Fork-Join-Framework und Phaser Bewertung: 0 von 5 Sternen0 BewertungenBPM: Strategien und Anwendungsfälle Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Bewertung: 0 von 5 Sternen0 BewertungenZend Framework 2: Für Einsteiger und Umsteiger Bewertung: 0 von 5 Sternen0 BewertungenHTML5 für Mobile Web Bewertung: 0 von 5 Sternen0 BewertungenSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Bewertung: 0 von 5 Sternen0 BewertungenJava EE Security Bewertung: 0 von 5 Sternen0 BewertungenAgile Architektur mit .NET - Grundlagen und Best Practices Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Bewertung: 0 von 5 Sternen0 BewertungenQualitätssicherung mit JavaScript und PHP Bewertung: 0 von 5 Sternen0 BewertungenJava EE 7: Ein Ausblick Bewertung: 0 von 5 Sternen0 BewertungenÜberzeugende Präsentationen: Konzeption, Technik und Design Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenCL Bewertung: 0 von 5 Sternen0 BewertungenSpring: Vier Perspektiven auf Framework und Ökosystem Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnliche E-Books
Memory Leaks Tools Bewertung: 0 von 5 Sternen0 BewertungenDas Java Memory Model: Überblick und Ausblick auf Java 9 Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Java-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenProgressive Web-Apps: Offlinefähige Web-Anwendungen mit nativen Qualitäten Bewertung: 0 von 5 Sternen0 BewertungenJavaScript auf dem Server Bewertung: 0 von 5 Sternen0 BewertungenLogging: Applikationsbeispiele Bewertung: 0 von 5 Sternen0 BewertungenJavaScript und TypeScript für C#-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenJava 7: Fork-Join-Framework und Phaser Bewertung: 0 von 5 Sternen0 BewertungenWeb Services mit Apache CXF: Schnell und einfach erklärt Bewertung: 0 von 5 Sternen0 BewertungenOSGi-Entwicklung Bewertung: 0 von 5 Sternen0 BewertungenMicrosoft Azure: Cloud Entwicklung für lokale Applikationen Bewertung: 0 von 5 Sternen0 BewertungenSpring Boot und Spring Cloud Bewertung: 5 von 5 Sternen5/5Erfahrungen mit Eclipse 4: aus der Praxis für die Praxis Bewertung: 0 von 5 Sternen0 BewertungenOpenLaszlo: schnell + kompakt Bewertung: 0 von 5 Sternen0 BewertungenModerne Webanwendungen mit AngularJS Bewertung: 0 von 5 Sternen0 BewertungenArchitekturpatterns mit Python: Test-Driven Development, Domain-Driven Design und Event-Driven Microservices praktisch umgesetzt Bewertung: 0 von 5 Sternen0 BewertungenAufsetzen, Testen und Betrieb einer Android-App Bewertung: 0 von 5 Sternen0 BewertungenDas Vulkan-API: Teil 2: Wie man ein Framework erstellt und Shader programmiert Bewertung: 0 von 5 Sternen0 Bewertungen.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Bewertung: 0 von 5 Sternen0 BewertungenJava 9 Streams Bewertung: 0 von 5 Sternen0 BewertungenJava FX - Status Quo: Status Quo Bewertung: 0 von 5 Sternen0 BewertungenSprachenkompendium: Vala, Go und Rust Bewertung: 0 von 5 Sternen0 BewertungenMit Scratch 3 programmieren lernen Bewertung: 0 von 5 Sternen0 BewertungenEnterprise Java Web Services Bewertung: 0 von 5 Sternen0 BewertungenjQuery Mobile: Einfach mobile Web-Apps entwickeln Bewertung: 0 von 5 Sternen0 BewertungenSpring: Vier Perspektiven auf Framework und Ökosystem Bewertung: 0 von 5 Sternen0 BewertungenOWASP Top 10: Sicherheitslücken im Web Bewertung: 0 von 5 Sternen0 BewertungenAngularJS: Testing und Best Practices Bewertung: 5 von 5 Sternen5/5Java EE Security Bewertung: 0 von 5 Sternen0 BewertungenJava EE Testing mit Arquillian Bewertung: 0 von 5 Sternen0 Bewertungen
Programmieren für Sie
Python kurz & gut: Für Python 3.x und 2.7 Bewertung: 3 von 5 Sternen3/5Algorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren für Einsteiger: Teil 1 Bewertung: 0 von 5 Sternen0 BewertungenJavaScript kurz & gut Bewertung: 3 von 5 Sternen3/5Programmieren lernen mit Python 3: Schnelleinstieg für Beginner Bewertung: 0 von 5 Sternen0 BewertungenDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Bewertung: 4 von 5 Sternen4/5Git kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenC++: Eine kompakte Einführung Bewertung: 0 von 5 Sternen0 BewertungenEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Bewertung: 0 von 5 Sternen0 BewertungenSQL von Kopf bis Fuß Bewertung: 4 von 5 Sternen4/5SQL – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenWeniger schlecht programmieren Bewertung: 4 von 5 Sternen4/5Python programmieren lernen: Der spielerische Einstieg mit Minecraft Bewertung: 0 von 5 Sternen0 BewertungenPython-Grundlagen Bewertung: 0 von 5 Sternen0 BewertungenRaspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Bewertung: 0 von 5 Sternen0 BewertungenMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Bewertung: 0 von 5 Sternen0 BewertungenLinux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren von Kopf bis Fuß Bewertung: 4 von 5 Sternen4/5JavaScript kinderleicht!: Einfach programmieren lernen mit der Sprache des Web Bewertung: 0 von 5 Sternen0 BewertungenLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Bewertung: 0 von 5 Sternen0 BewertungenPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Bewertung: 0 von 5 Sternen0 BewertungenTraumjob IT 2021: Branchenüberblick, Erfahrungsberichte und Tipps zum Berufseinstieg Bewertung: 5 von 5 Sternen5/5C von Kopf bis Fuß Bewertung: 3 von 5 Sternen3/5Docker: Webseiten mittels Containerarchitektur erstellen Bewertung: 3 von 5 Sternen3/5Microcontroller für das IoT Bewertung: 0 von 5 Sternen0 BewertungenDie nicht zu kurze Kurzeinführung in MATLAB: Erste Schritte in MATLAB Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in TypeScript: Grundlagen für Entwickler Bewertung: 0 von 5 Sternen0 BewertungenRaspberry Pi: Einstieg • Optimierung • Projekte Bewertung: 5 von 5 Sternen5/5Hacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Bewertung: 0 von 5 Sternen0 BewertungenC++: Kurzportträt einer zeitlosen Sprache Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Memory Leaks in Java
0 Bewertungen0 Rezensionen
Buchvorschau
Memory Leaks in Java - Angelika Langer
Angelika Langer, Klaus Kreft
Memory Leaks in Java
ISBN: 978-3-86802-464-7
© 2013 entwickler.press
Ein Imprint der Software & Support Media GmbH
1 Garbage Collection und Memory Management
Da sich Oracle mit Java 8 noch ein wenig Zeit lässt (als anvisierter Termin wird im Moment „Frühjahr 2014" genannt), wollen wir die Gelegenheit nutzen, um mit diesem shortcut noch einmal an die Artikelserie über Garbage Collection aus den Jahren 2010/11 anzuschließen. Wir hatten damals die Garbage Collection in der HotSpot-JVM von Sun/Oracle sowie ihr Tuning detailliert besprochen. Bei Interesse kann man diese Artikel weiterhin auf unserer Webseite [1] oder zusammengefasst als Buch [2] finden. Wir wollen anknüpfend an dieses zurückliegende Thema diskutieren, wie es zu Memory Leaks in Java kommen kann und wie man sie finden oder besser schon von vornherein vermeiden kann.
Bei der Erwähnung von Memory Leaks mag man sich Leser fragen, was denn das sein soll – ein Memory Leak in Java. Gibt es so etwas überhaupt? Eigentlich wurde doch beim Wechsel hin zu Java und weg von C bzw. C++ (also Programmiersprachen mit explizitem Memory Management durch den Programmierer) versprochen, dass Probleme wie Memory Leaks wegen dem automatischen Memory Management mittels Garbage Collector ein für alle Mal passé seien. Es stimmt schon: Memory Leaks wie in C/C++, die auf Grund von vergessenem free() bzw. delete entstehen, gibt es in Java glücklicherweise nicht mehr. Das hat den Vorteil, dass Memory Leaks in Java deutlich seltener auftreten als in C/C++. Ganz offensichtlich treten Memory Leaks in Java so selten auf, dass es eine Herausforderung ist, eines zu erzeugen. Es soll vorgekommen sein, dass Java-Entwickler in Bewerbungsgesprächen gebeten wurden, Memory Leaks zu erzeugen [3], um ihre Fähigkeiten unter Beweis zu stellen. Der Nachteil ist, dass Memory Leaks in Java meist keine Flüchtigkeitsfehler bei der Programmierung sind, sondern häufig eher Konzept- bzw. Designfehler.
Was macht der Garbage Collector?
Der Ausgangspunkt für Memory Leaks in Java ist die automatische Garbage Collection, denn allein der Garbage Collector entscheidet, wann Objekte bzw. ihr Speicher freigegeben werden. Wie macht er das? Bei allen Sun/Oracle Garbage Collectoren (außer dem Garbage First („G1") Collector, [4]) wird dazu ein Marking angewandt. Vereinfacht beschrieben sieht das so aus, dass ausgehend von den so genannten Root References alle erreichbaren Objekte markiert werden. Danach weiß der Garbage Collector, dass die markierten Objekte erreichbar sind und geht davon aus, dass diese weiter im Programm genutzt werden. Umgekehrt weiß er auch, dass er alle nicht markierten Objekte freigegeben kann. Im Detail ist das Marking, je nach Garbage-Collector-Algorithmus, eine ziemlich komplizierte Angelegenheit, die aus mehreren Phasen bestehen kann. Wer sich dafür interessiert findet die Details unter [5], [6] und [7]. Die Root References sind, wie der