Interview

„Ich hätte mir mehr Zeit gewünscht, bevor G1 zum Standard wird“ – Kirk Pepperdine über den neuen Garbage Collector in Java 9

Coman Hamilton

© Shutterstock.com/dolphfyn

Nachdem kürzlich bekannt wurde, dass der Garbage-First (G1) Collector in Java 9 zum Standard-Garbage Collector gemacht werden soll, setzten wir uns mit dem allseits bekannten „Java-Mechaniker“ und Tuning-Spezialisten Kirk Pepperdine in Verbindung, um seine Sicht der Dinge auf den neuen Standard zu erfahren.

JAXenter: Würde G1 als Standard-Garbage Collector für Java eine Verbesserung darstellen?

Kirk Pepperdine: Das ist eine schwierige Frage. Einerseits wissen wir nicht, wie viele Leute sich die Zeit nehmen, ihren Collector explizit in der Kommandozeile festzulegen. Für diese Leute wird die Änderung natürlich keine Bedeutung haben. Ich kann mir vorstellen, dass es eine andere Gruppe von Usern gibt, die mit der Standardeinstellung zufrieden sind und sich dafür entschieden haben, den Collector nicht explizit festzulegen.

Mancher würde wohl sagen, dass das verantwortungslos ist. Allerdings müsste man alle 688 Flags festlegen, wenn man ganz sicher gehen will, dass sich ihre Werte nicht geändert haben. Was diese Leute, und auch jene, die es nicht wissen oder die es nicht kümmert, anbelangt, ist es schwierig zu sagen, ob die Änderung ein Grund für Kummer ist. Ehrlich gesagt wissen wir es einfach nicht, und ich glaube auch nicht, dass es einen einfachen Weg gibt, wie man es herausfinden könnte.

Das Pro-Argument besteht darin, dass der Collector stabil genug ist und dass es an der Zeit ist, sich mit diesem „Eine Größe für alle“-Collector der Zukunft zuzuwenden. Wenn weitere Probleme aufgespürt werden sollen, dann erreicht man dies am leichtesten dadurch, dass der Collector ein breiteres Spektrum von Use Cases abdeckt. Zur Gegenmeinung: Wenn es um Änderungen an Java ging, gab es traditionell gesehen immer eine konservative Position. User, die sich nie mit der Abstimmung des Garbage Collectors befasst haben, mit solch einer Möglichkeit zu konfrontieren, hätte als unverantwortlich angesehen werden können. Wie gesagt, das ist eine schwierige Frage.

Meine persönliche Ansicht ist, dass die Änderung etwas zu früh kommt. Der Collector ist gerade einmal so weit, dass ich ihn als stabil genug für Produktionsumgebungen betrachte. Ich würde mir mehr Zeit wünschen, bevor er zum Standard wird. Sicherlich könnte man sich für Java 10 erhoffen, dass G1 zum Standard-Garbage Collector gemacht wird.

Des Weiteren glaube ich nicht, dass wir wirklich wissen, wie man in tuned. Glücklicherweise muss man das meiner Erfahrung nach nicht allzu häufig machen. Wenn man es allerdings tun muss, tja, dann muss ich sagen, dass ich nicht glaube, dass wir zur Zeit die richtigen Werkzeuge dafür haben.

JAXenter: Was hältst du von dem Umstand, dass die Ankündigung recht spät im Entwicklungsprozess erfolgte?

Kirk Pepperdine: Für mich sieht das so aus: Einige begeisterte Leute sagen, dass sie es geschafft haben und ihre Errungenschaft bereit für die große Bühne ist. Es ist schön, ein derartiges Ausmaß von Enthusiasmus zu sehen. Wir können allerdings nicht zulassen, dass es die Entscheidungen, wohin die JVMs „draußen in der Wildnis“ steuern, beeinflusst.

JAXenter: Der G1 ist besonders für Low-Latency-Anwendungen geeignet – wird er einem das Leben schwer machen, wenn man nicht in diesem Bereich arbeitet?

Kirk Pepperdine: Im Moment ist CMS für Low-Latency-Anwendungen immer noch besser geeignet. Es gibt immer noch einige unglückliche Implementierungs-Details, die die Heap-Größe mit den Pausenzeiten kuppeln. Aber es gibt beim G1 noch weitere Aspekte wie etwa die Art und Weise, wie Floating Garbage, der die Fähigkeit des Collectors, kurze Pausenzeiten zu liefern, stört, gehandhabt wird. Da jene, die mit Low-Latency-Apps arbeiten, sich der Wichtigkeit des Memory- und Garbage-Collector-Tunings bewusst sind, ist all dies kein Grund, G1 zum Standard-Collector zu machen. Das sind nicht die Leute, um die ich mir Sorgen mache.

JAXenter: Was stimmt mit dem derzeitigen Garbage-Collection-System nicht?

Kirk Pepperdine: Für die meisten Anwendungen gibt es an verwaltetem Speicher nichts auszusetzen. Tatsächlich bietet er Anwendungen ein Niveau der Sicherheit, das man auf anderem Weg einfach nicht erreichen kann. Dieses Sicherheitsniveau erlaubt es uns, Dinge zu tun, die andernfalls nicht möglich wären. Die Arbeit in Umgebungen mit verwaltetem Speicher oder einem Garbage Collector bringt einen enormen Produktivitätsvorteil. Abgesehen davon gibt es allerdings Anwendungen, die auf die Stop-the-World-Pausen, die derzeitige Implementierungen benötigen, um die Arbeit zu erledigen, empfindlich reagieren.

Wie lang sind diese Pausen? Das hängt von den Implementierungen ab, aber vor allem spielen die Heap-Größe, die Anzahl der Objekte im Heap und – zu einem gewissen Ausmaß – die Churn-Rate während der nebenläufigen Phasen eine Rolle. Der G1 war dafür gedacht, diese Beziehungen aufzubrechen. Er hat sie sicherlich schwächer gemacht, aber aufgebrochen hat er sie nicht. Ein weiteres Problem mit dem G1 – zumindest in OpenJDK – besteht darin, dass er einfach nicht so nebenläufig ist, wie er es sein könnte. Manchmal braucht der Garbage Collector exklusiven Zugriff auf die Java-Heapdatenstrukturen. Um diesen Zugriff zu erhalten, „gated“ er die Anwendungs-Threads an einem Safe-Point. Die aktuelle Implementierung greift sich am Safe-Point unterschiedslos *alle* Anwendungs-Threads, völlig egal, ob sie mit der Datenstruktur interagieren oder nicht.

Besser wäre es wohl, wenn Anwendungs-Threads, die dies nicht tun, einfach weiter laufen dürften. Allerdings sollte man mit der Kritik an der derzeitigen Implementierung nicht allzu harsch sein, denn Garbage Collection ist ein sehr schwer zu lösendes Problem. Ich denke, die Leute, die am GC arbeiten, wissen, dass es besser gehen könnte und arbeiten auch sehr hart daran. Wir sollten ihnen dankbar für das sein, was sie uns bis dato geschenkt haben. Denn noch einmal: Verwalteter Speicher war ein großer Enabler für diese Industrie.

Lesen Sie auch: Neuer Garbage Collector in Java 9: Was ändert sich – was bleibt?

Aufmacherbild: Row of green and clean rubbish bins on the street von Shutterstock.com / Urheberrecht: dolphfyn

Geschrieben von
Coman Hamilton
Coman Hamilton
Coman was editor of JAXenter.com at S&S Media Group. He has a master's degree in cultural studies and has written and edited content for numerous websites and magazines, as well as several ad agencies.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: