Java Core Programmierung - Memory Model und Garbage Collection

Java Core Programmierung - Memory Model und Garbage Collection

von: Angelika Langer, Klaus Kreft

entwickler.press, 2011

ISBN: 9783868022629 , 250 Seiten

Format: PDF, OL

Kopierschutz: DRM

Windows PC,Mac OSX Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 19,99 EUR

Mehr zum Inhalt

Java Core Programmierung - Memory Model und Garbage Collection


 

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