Suchen und Finden
Inhaltsverzeichnis
4
Vorwort
12
A – Java-Memory-Modell
14
Kapitel 1 – Einführung in das Java-Memory-Modell
18
1.1 Atomare Zugriffe
20
1.2 Sequential Consistency
21
1.3 Sichtbarkeitsregeln für volatile-Variablen
22
1.4 Sichtbarkeitsregeln für Synchronisation
23
1.5 Zusammenfassung
25
Kapitel 2 – Das Java-Memory-Modell im Überblick
26
2.1 Das Java-Memory-Modell
27
2.2 Sichtbarkeitsregeln im JMM
29
2.3 Zusammenfassung
33
Kapitel 3 – Die Kosten der Synchronisation
34
3.1 Performanceeinbußen durch Synchronisation
35
3.2 Skalierbarkeitseinbußen durch Synchronisation
36
3.3 Sequenzialisierung bekämpfen
41
3.4 Zusammenfassung
44
Kapitel 4 – Details zu volatile-Variablen
46
4.1 volatile als Alternative zur Synchronisation
46
4.2 Missverständnis
49
4.3 Kosten von volatile
51
4.4 Speichereffekte von volatile auf andere Variablen
52
4.5 volatile-Referenzvariablen
55
4.6 Zusammenfassung
59
Kapitel 5 – volatile und das Double-Check-Idiom
60
5.1 Ausgangssituation
60
5.2 Das Double-Check-Idiom
61
5.3 Optimierung à la Bloch
64
5.4 Single-Check-Idiome
67
5.5 Zusammenfassung
71
Kapitel 6 – Regeln für die Verwendung von volatile
72
6.1 Effekte von Synchronisation
72
6.2 Regeln für den Einsatz von volatile
74
6.3 Beispiele für den erfolgreichen Einsatz von volatile
76
6.4 Zusammenfassung
83
Kapitel 7 – Die Initialisation-Safety-Garantie
84
7.1 Das Racy-Single-Check-Idiom
84
7.2 Anforderungen an unveränderliche
87
7.3 Speichereffekte im Zusammenhang mit final-Feldern
88
7.4 Unterschiede zu volatile
97
7.5 final Variablen vs. final Felder
97
7.6 Zusammenfassung
99
Kapitel 8 – Über die Gefahren allzu aggressiver Optimierungen
100
8.1 Racy-Single-Check und unveränderlichen Typen
100
8.2 Genereller Verzicht auf Synchronisation/volatile bei unveränderlichen Typen?
102
8.3 Race Conditions bei der Konstruktion von Objekten
105
8.4 Zusammenfassung
110
Kapitel 9 – Atomic Scalars
112
9.1 Ein Thread-sicherer Zähler mit Synchronisation
113
9.2 CAS - Compare and Swap
114
9.3 Ein Thread-sicherer Zähler unter Verwendung von atomaren Variablen
115
9.4 Zusammenfassung
117
Kapitel 10 – Atomare Referenzvariablen
118
10.1 Fallstudie zu atomaren Referenzen
118
10.2 Atomare Referenzen - Übersicht
126
10.3 Praxisrelevanz
128
10.4 Zusammenfassung
129
Kapitel 11 – CopyOnWrite ArrayList
132
11.1 Was ist eine CopyOnWriteArrayList?
132
11.2 Wie funktioniert eine CopyOnWriteArrayList?
133
11.3 Wie funktioniert der Iterator von CopyOnWriteArrayList
137
11.4 Eine andere Anwendung desselben Prinzips
139
11.5 Zusammenfassung
142
A – Verweise
144
B – Memory Management und Garbage Collection
146
Kapitel 12 – Generational Garbage Collection
149
12.1 Generational Garbage Collection
149
12.2 Die Heap-Aufteilung in einer Sun JVM
152
12.3 Vor- und Nachteil der Generational Garbage Collection
155
12.4 Zusammenfassung
157
Kapitel 13 – Young Generation Garbage Collection
158
13.1 Mark and Sweep
158
13.2 Mark and Copy
161
13.3 Parallele Allokation und TLABs
172
13.4 Zusammenfassung
173
Kapitel 14 – Old Generation Garbage Collection - Teil 1
174
14.1 Wozu braucht man auf der Old Generation einen anderen Algorithmus?
175
14.2 Serial Mark and Compact
177
14.3 Alternative Algorithmen für die Old Generation
181
14.4 Parallel Mark and Compact
183
14.5 Zusammenfassung
186
Kapitel 15 – Old Generation Garbage Collection - Teil 2
188
15.1 Concurrent Mark and Sweep
188
15.2 Parallele Threads in CMS
192
15.3 Synchronisationsbedarf und Interaktion mit der Young Generation Garbage Collection
193
15.4 Rückfall in die serielle Garbage Collection
195
15.5 Vor- und Nachteil des CMS-Collectors
196
Kapitel 16 – Garbage Collection Tuning - die Ziele
198
16.1 Garbage-Collection-Tuning-Ziele
198
16.2 Multi-Core/Multi-Prozessor-Architektur und Garbage Collection
206
16.3 Zusammenfassung
208
Kapitel 17 – Garbage Collection Tuning - die Details
210
17.1 Auswahl des Garbage Collectors
210
17.2 Anpassen der Collectors an die Objektpopulation der Applikation
213
17.3 Zusammenfassung
225
Kapitel 18 – Garbage-First (G1) Garbage Collector - Teil 1
228
18.1 Motivation
228
18.2 Funktionale Übersicht
230
18.3 Zusammenfassung
235
18.4 Danksagung
235
Kapitel 19 – Garbage-First (G1) Garbage Collector - Teil 2
236
19.1 Details der G1-Verwaltung
237
19.2 Die Garbage-Collection-Pause
241
19.3 G1 Collection Lifecycle
245
19.4 Zusammenfassung
247
B – Verweise
248
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.