Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
HOME 


  UPCOMING
  PREVIOUS
  MATERIALS
 
GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
Der neue Garbage Collector Garbage First (kurz G1)

Der neue Garbage Collector Garbage First (kurz G1)  
ABSTRACT
 
Für die Virtuelle Maschine von Sun wurde ein neuartiger Garbage-Collection-Algorithmus, "G1" genannt, entwickelt, der in Java 7 der Standard-Algorithmus sein wird und für Early Adopters bereits in Java 6 Update 14 vorab verfügbar ist. Das Ziel dieses neuen Garbage Collectors ist es, die Stop-World-Phasen verlässlicher zu steuerm, ohne dabei den Durchsatz der Applikation wesentlich zu beeinträchtigen.

Bislang wurden in der Sun-JVM (und auch den meisten anderen virtuellen Maschinen) generationenabhängige Garbage-Collection-Algorithmen verwendet. Sie teilen den Heap in unterschiedlich Bereiche (sogenannte "Generationen") für junge und alte Objekte ein. Auf den verschiendenen Generationen werden unterschiedliche Algorithmen verwendet: Mark-And-Copy auf der Young Generation und Mark-And-Sweep auf der Old Generation. Diese traditionell verwendeten Algorithmen haben den Nachteil, dass sie zwangsläufig zu sogenannten "Stop-the-World"-Phasen führen, bei denen die Applikations-Threads angehalten werden, damit die Garbage-Collection-Threads exklusiven Zugriff auf den Heap haben.

Diese Pausen sind in vielen Anwendungen problematisch. Dazu gehören Anwendungen, in denen es Vorgaben für die Reaktions- und Verarbeitungszeiten gibt, z.B. Kommunikationsanwendungen, die innerhalb einer vorgegebenen Zeitspanne auf einen Request einen Response schicken müssen. Wenn die GC-Pause zu lang ist, schafft die Anwendung es nicht, rechtzeitig zu reagieren. Das gleiche gilt aber auch für Anwendungen mit GUI; man kann den Benutzer nicht beliebig lange auf eine Reaktion warten lassen, nur weil der Garbage Collector gerade alle Threads der Anwendung blockiert. Unterm Strich sind es relativ viele Anwendungen, die mit den GC-Pausen Probleme bekommen können. Deshalb ist es wichtig, die Länge und Häufigkeit der GC-Pausen verlässlich zu begrenzen. Das geht mit den herkömmlichen GC-Algorithmen kaum und wenn, dann nur unter Inkaufnahme spürbarer Durchsatzverluste.

Der neue GC-Algorithmus "G1" (für "Garbage First") von Sun versucht, die GC-Pausen verlässlicher zu gestalten, ohne den Durchsatz nennenswert zu beinträchtigen. Wie es funktioniert, wird in der Session erläutert. Es werden die Prinzipien des G1-Algorithmus erläutert und Unterschiede zu den herkömmlichen Algorithmen aufgezeigt, damit Java-Entwickler beurteilen können, ob G1-Garbage-Collection eine brauchbare Alternative für ihr Projekt ist.

 
PREREQUISITES

 
Level: intermediate 
Duration: 40-60 min
Prerequisites: Attendants should be familiar with Java.
Presented at: JUGS Event 2009 , Bern, Switzerland, Dec 14, 2009
JAX 2010 , Mainz, Germany, May 3-7, 2010
 
SPEAKER: KLAUS KREFT
 
Klaus Kreft arbeitet seit ca. 15 Jahren als Consultant im Bereich der Software-Entwicklung mit Java. Sein Interesse gilt hauptsächlich komplexen Systemen mit hohen Performance-Anforderungen. Er ist Sprecher auf Fachkonferenzen, darunter die OOP. Zusammen mit Angelika Langer ist er Autor zahlreicher Veröffentlichungen, darunter die Kolumne "Effective Java" im JavaMagazin.
 
 

Weiterführende Informationen:
Seminars
 
High-Performance Java
4-tägiges Seminar (open enrollment / on-site)
Effective Java
4-tägiges Seminar (open enrollment / on-site)
Java GC
1-tägiges Seminar (open enrollment / on-site)
 
Papers
 
online FAQ Performance Tuning in Java
Beiträge aus unserer Kolumne "Effective Java"
  © Copyright 1995-2010 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Conferences/Abstracts/G1.htm  last update: 1 Jun 2010