Sie sind hier
E-Book

Java Core Programmierung

Memory Model und Garbage Collection

AutorAngelika Langer, Klaus Kreft
Verlagentwickler.press
Erscheinungsjahr2011
Seitenanzahl250 Seiten
ISBN9783868022629
FormatPDF
KopierschutzDRM
GerätePC/MAC/eReader/Tablet
Preis19,99 EUR
Für Java-Entwickler sind nicht nur die Sprachelemente der Programmiersprache Java und die umfangreichen Bibliotheken des JDK (Java Development Kit) von Bedeutung; auch die Ablaufumgebung (JVM = Java Virtual Machine) ist relevant für die Software-Entwicklung in Java. Das vorliegende Buch 'Java Core Programmierung' befasst sich mit zwei grundlegenden und wichtigen Aspekten der Java-Ablaufumgebung: dem Java Memory Model (JMM) und der Freispeicherverwaltung (Garbage Collection.) Beim Java Memory Model geht es um die Regeln und Garantien für konkurrierende Zugriffe auf Java-Objekte in Multithread-Programmen. Es werden u.a. folgende Fragestellungen betrachtet: Wann und unter welchen Umständen werden Modifikationen, die ein Thread an einem Java-Objekt gemacht hat, anderen Threads sichtbar? Was genau ist der Effekt von Sprachmitteln wie synchronized, volatile und final? Was ist eine CAS-Operation? Wofür werden atomare Variablen benötigt? Was ist Lock-Free-Programming und warum könnte es mich als Java-Entwickler interessieren? Schon seit Langem ist das Memory Model Bestandteil der Sprachspezifikation von Java. Es ist aber viele Jahre lang wenig beachtet worden. Erst seit Multi-CPU- und Multicore-Plattformen vorherrschend sind, gewinnt das Wissen über die Details des Memory Models an Bedeutung. Detaillierte Kenntnisse des Memory Models sind unerlässlich für alle Java-Entwickler, die Java-Anwendungen für Multi-CPU- und Multicore-Hardware entwickeln und sich mit der Optimierung dieser Anwendungen hinsichtlich Skalierbarkeit und Performanz befassen. Zwar geht es auch beim Thema Freispeicherverwaltung um den 'Speicher', aber mit dem Java Memory Model hat die Garbage Collection nichts zu tun. Es geht vielmehr um die Strategien, die eine virtuelle Maschine anwendet, um den im Programm mit new angeforderten Freispeicher zu verwalten und ihn wieder frei zu geben, wenn er nicht mehr benötigt wird. Virtuelle Maschinen verwenden dazu unterschiedliche Algorithmen. Im vorliegenden Buch werden die Garbage-Collection-Algorithmen der populären HotSpot-JVM von Sun (heute Oracle) betrachtet. Es wird erläutert, warum Generational Garbage Collection sinnvoll ist, wie die HotSpot-JVM den Freispeicher aufteilt und wie die parallelen und konkurrierenden Garbage-Collection-Algorithmen funktionieren. Auch der relativ neue 'Garbage-First' (G1) Collector wird vorgestellt. Ein wesentliches Augenmerk liegt dabei auf dem Tuning dieser zahlreichen Garbage-Collection-Algorithmen. Es lohnt sich beispielsweise zu prüfen, wie viel von der gesamten CPU-Zeit einer Java-Applikation für die Garbage-Collection aufgewendet werden muss. Idealerweise möchte man einen möglichst hohen Durchsatz haben, d.h. es soll viel CPU-Zeit für die Anwendung zur Verfügung stehen und nur wenig Zeit für die Freispeicherverwaltung aufgewendet werden. Auch sollte die Garbage Collection nicht zu störenden Pausen führen, in denen sämtliche Applikations-Threads zum Zwecke der Garbage Collection angehalten werden. Um die Maximierung des Durchsatzes und die Minimierung der Pausenzeiten zu erreichen, bietet die HotSpot-JVM zahlreiche Tuning-Möglichkeiten. Das Buch basiert auf einer Artikelserie, die die Autoren im Java Magazin in den Jahren 2008 bis 2011 veröffentlicht haben. Weitere Beiträge der Artikelreihe sind unter http://www.angelikalanger.com/Articles/EffectiveJava.html zu finden.

Angelika Langer arbeitet als Trainer und Consultant mit eigenem Schulungsprogramm im Bereich der Software-Entwicklung mit Java und C++. Sie ist Autor der Java Generics FAQs, einer Online-Ressource zum Thema Java Generics. Sie ist regelmäßiger Sprecher auf zahlreichen Konferenzen, darunter JavaOne, OOPLSA, JAX, und viele andere. Klaus Kreft arbeitet als Consultant und Performance-Experte im Bereich der Software-Entwicklung mit Java. Sein Interesse gilt komplexen Systemen mit hohen Performance-Anforderungen. Er ist Sprecher auf Fachkonferenzen (JAX, OOP, Ch/Open-Workshop-Tage und diverse JUGs). Gemeinsam sind sie Autor zahlreicher Veröffentlichungen, darunter einer Artikelserie über Core Java Programmierung in der Zeitschrift JavaMagazin und das Buch 'Standard C++ IOStreams and Locales', erschienen bei Addison-Wesley, 2000.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Inhaltsverzeichnis4
Vorwort12
A – Java-Memory-Modell14
Kapitel 1 – Einführung in das Java-Memory-Modell18
1.1 Atomare Zugriffe20
1.2 Sequential Consistency21
1.3 Sichtbarkeitsregeln für volatile-Variablen22
1.4 Sichtbarkeitsregeln für Synchronisation23
1.5 Zusammenfassung25
Kapitel 2 – Das Java-Memory-Modell im Überblick26
2.1 Das Java-Memory-Modell27
2.2 Sichtbarkeitsregeln im JMM29
2.3 Zusammenfassung33
Kapitel 3 – Die Kosten der Synchronisation34
3.1 Performanceeinbußen durch Synchronisation35
3.2 Skalierbarkeitseinbußen durch Synchronisation36
3.3 Sequenzialisierung bekämpfen41
3.4 Zusammenfassung44
Kapitel 4 – Details zu volatile-Variablen46
4.1 volatile als Alternative zur Synchronisation46
4.2 Missverständnis49
4.3 Kosten von volatile51
4.4 Speichereffekte von volatile auf andere Variablen52
4.5 volatile-Referenzvariablen55
4.6 Zusammenfassung59
Kapitel 5 – volatile und das Double-Check-Idiom60
5.1 Ausgangssituation60
5.2 Das Double-Check-Idiom61
5.3 Optimierung à la Bloch64
5.4 Single-Check-Idiome67
5.5 Zusammenfassung71
Kapitel 6 – Regeln für die Verwendung von volatile72
6.1 Effekte von Synchronisation72
6.2 Regeln für den Einsatz von volatile74
6.3 Beispiele für den erfolgreichen Einsatz von volatile76
6.4 Zusammenfassung83
Kapitel 7 – Die Initialisation-Safety-Garantie84
7.1 Das Racy-Single-Check-Idiom84
7.2 Anforderungen an unveränderliche87
7.3 Speichereffekte im Zusammenhang mit final-Feldern88
7.4 Unterschiede zu volatile97
7.5 final Variablen vs. final Felder97
7.6 Zusammenfassung99
Kapitel 8 – Über die Gefahren allzu aggressiver Optimierungen100
8.1 Racy-Single-Check und unveränderlichen Typen100
8.2 Genereller Verzicht auf Synchronisation/volatile bei unveränderlichen Typen?102
8.3 Race Conditions bei der Konstruktion von Objekten105
8.4 Zusammenfassung110
Kapitel 9 – Atomic Scalars112
9.1 Ein Thread-sicherer Zähler mit Synchronisation113
9.2 CAS - Compare and Swap114
9.3 Ein Thread-sicherer Zähler unter Verwendung von atomaren Variablen115
9.4 Zusammenfassung117
Kapitel 10 – Atomare Referenzvariablen118
10.1 Fallstudie zu atomaren Referenzen118
10.2 Atomare Referenzen - Übersicht126
10.3 Praxisrelevanz128
10.4 Zusammenfassung129
Kapitel 11 – CopyOnWrite ArrayList132
11.1 Was ist eine CopyOnWriteArrayList?132
11.2 Wie funktioniert eine CopyOnWriteArrayList?133
11.3 Wie funktioniert der Iterator von CopyOnWriteArrayList137
11.4 Eine andere Anwendung desselben Prinzips139
11.5 Zusammenfassung142
A – Verweise144
B – Memory Management und Garbage Collection146
Kapitel 12 – Generational Garbage Collection149
12.1 Generational Garbage Collection149
12.2 Die Heap-Aufteilung in einer Sun JVM152
12.3 Vor- und Nachteil der Generational Garbage Collection155
12.4 Zusammenfassung157
Kapitel 13 – Young Generation Garbage Collection158
13.1 Mark and Sweep158
13.2 Mark and Copy161
13.3 Parallele Allokation und TLABs172
13.4 Zusammenfassung173
Kapitel 14 – Old Generation Garbage Collection - Teil 1174
14.1 Wozu braucht man auf der Old Generation einen anderen Algorithmus?175
14.2 Serial Mark and Compact177
14.3 Alternative Algorithmen für die Old Generation181
14.4 Parallel Mark and Compact183
14.5 Zusammenfassung186
Kapitel 15 – Old Generation Garbage Collection - Teil 2188
15.1 Concurrent Mark and Sweep188
15.2 Parallele Threads in CMS192
15.3 Synchronisationsbedarf und Interaktion mit der Young Generation Garbage Collection193
15.4 Rückfall in die serielle Garbage Collection195
15.5 Vor- und Nachteil des CMS-Collectors196
Kapitel 16 – Garbage Collection Tuning - die Ziele198
16.1 Garbage-Collection-Tuning-Ziele198
16.2 Multi-Core/Multi-Prozessor-Architektur und Garbage Collection206
16.3 Zusammenfassung208
Kapitel 17 – Garbage Collection Tuning - die Details210
17.1 Auswahl des Garbage Collectors210
17.2 Anpassen der Collectors an die Objektpopulation der Applikation213
17.3 Zusammenfassung225
Kapitel 18 – Garbage-First (G1) Garbage Collector - Teil 1228
18.1 Motivation228
18.2 Funktionale Übersicht230
18.3 Zusammenfassung235
18.4 Danksagung235
Kapitel 19 – Garbage-First (G1) Garbage Collector - Teil 2236
19.1 Details der G1-Verwaltung237
19.2 Die Garbage-Collection-Pause241
19.3 G1 Collection Lifecycle245
19.4 Zusammenfassung247
B – Verweise248

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

aufstieg

aufstieg

Zeitschrift der NaturFreunde in Württemberg Die Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur ...

FREIE WERKSTATT

FREIE WERKSTATT

Die Fachzeitschrift FREIE WERKSTATT berichtet seit der ersten Ausgaben 1994 über die Entwicklungen des Independent Aftermarkets (IAM). Hauptzielgruppe sind Inhaberinnen und Inhaber, Kfz-Meisterinnen ...

Das Hauseigentum

Das Hauseigentum

Das Hauseigentum. Organ des Landesverbandes Haus & Grund Brandenburg. Speziell für die neuen Bundesländer, mit regionalem Schwerpunkt Brandenburg. Systematische Grundlagenvermittlung, viele ...

DHS

DHS

Die Flugzeuge der NVA Neben unser F-40 Reihe, soll mit der DHS die Geschichte der "anderen" deutschen Luftwaffe, den Luftstreitkräften der Nationalen Volksarmee (NVA-LSK) der ehemaligen DDR ...

Euphorion

Euphorion

EUPHORION wurde 1894 gegründet und widmet sich als „Zeitschrift für Literaturgeschichte“ dem gesamten Fachgebiet der deutschen Philologie. Mindestens ein Heft pro Jahrgang ist für die ...