ZGC: The Future of Low-Latency Garbage Collection Is Here

Ғылым және технология

The Z Garbage Collector (ZGC) is a scalable low-latency garbage collector providing sub-millisecond max pause times. Get an overview of the design principles behind ZGC, how it performs, and how to best use it to reduce latency for your application. We also look at the ongoing work to make ZGC a generational garbage collector.
Presented by Erik Österlund - Oracle
Tags: #Java #OpenJDK #GC

Пікірлер: 17

  • @TheDoppelganger29
    @TheDoppelganger29 Жыл бұрын

    Even better with playback speed 1.5x ;)

  • @toinouH
    @toinouH Жыл бұрын

    Thank you for this video and all the amazing work done on ZGC :)

  • @sblantipodi
    @sblantipodi11 ай бұрын

    Amazing job guys

  • @StefanReich
    @StefanReich Жыл бұрын

    Amazing work. I know GC development is fiendishly complex

  • @JorgetePanete
    @JorgetePanete Жыл бұрын

    👏👏 how does throughput compare now with other GCs?

  • @dumdumdumdum8804

    @dumdumdumdum8804

    Жыл бұрын

    good question but if they are saying 4 times increase that means it is the best GC in terms of throughput. or may be other GCs will get some benefits from this learning.

  • @keyboard_toucher
    @keyboard_toucher4 ай бұрын

    After you jump (with jnz, etc.) to the slow path, how does the slow path know where to return to?

  • @dumdumdumdum8804
    @dumdumdumdum8804 Жыл бұрын

    awesome stuff, when will it be available as part of jdk.

  • @sblantipodi
    @sblantipodi11 ай бұрын

    Is it normal that max heap size is doubled when using Generational ZGC? If I set -xmx512 my max heap size is 512MB when using ZGC, it became 1024MB if I use Generational ZGC.

  • @slr150
    @slr150 Жыл бұрын

    Just curious, is it possible to use reference counting for those objects whose lifecycle can be determined at compile time? I think a majority of objects could be cleaned up this way including iterators, Streams etc...

  • @JorgetePanete

    @JorgetePanete

    Жыл бұрын

    I think the idea is reusing old objects instead of deallocating and allocating

  • @StefanReich

    @StefanReich

    Жыл бұрын

    I don't think reference counting is a good fit for the existing infrastructure

  • @cptfwiffo

    @cptfwiffo

    Жыл бұрын

    Why would you want to have the the overhead? If you know the lifecycle at compile time, you know when you can free the memory anyway right? Then you don't need the memory overhead to store the reference counts, nor the cpu to update them. Reference counting isn't a silver bullet...

  • @slr150

    @slr150

    Жыл бұрын

    @@cptfwiffo I agree with what you're saying. But may be there was some confusion as to what "reference counting" is. More specifically I meant compile-time reference counting (not runtime reference counting) For example: void foo() { var x = new StringBuilder("Hello"); x.append(", world!"); System.out.println(x.toString()); // Compiler to inject code to free x } Here the compiler needs to count the references in order to ensure that references to the new StringBuilder is limited to local variables before injecting code to free it (it could of course do more complicated analysis). My understanding is that, this is not being done by javac.

  • @quananhmai5701

    @quananhmai5701

    Жыл бұрын

    @@slr150 In your example x never escapes so the compiler can explode it into its components and no object is allocated at all

  • @berndeckenfels
    @berndeckenfels Жыл бұрын

    There is a chance to rename it to GZGC ,)

Келесі