Generational ZGC and Beyond

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 พ.ย. 2024

ความคิดเห็น • 16

  • @toinouH
    @toinouH ปีที่แล้ว +8

    I was hyped by generational ZGC and now I am even more than ever before. Thank you for the talk, the recording and all the work you are doing guys.

  • @BangaloreJUG
    @BangaloreJUG 3 หลายเดือนก่อน

    Wow, looks awesome in performance.

  • @StefanReich
    @StefanReich ปีที่แล้ว

    Incredible benchmark results! And very nice to see the multi-mapping gone which was a bit of a headache from an operations perspective.
    Thread-local GC also sounds very interesting, but definitely also looks like quite a challenge to implement. But then again, you are used to huge challenges like this.

  • @ganeshjoe6022
    @ganeshjoe6022 ปีที่แล้ว

    @erik - could you please share some refences on tuning parameters for ZGC

  • @quananhmai5701
    @quananhmai5701 ปีที่แล้ว

    19:20 test can fuse with the following jcc so the non-generational load barrier is actually a one-instruction barrier.

    • @broneetube
      @broneetube ปีที่แล้ว

      I don't think there's any desire to make improvements to the non-generational ZGC.

    • @quananhmai5701
      @quananhmai5701 ปีที่แล้ว +1

      @@broneetube One-instruction barrier is the current state of non-generational ZGC

    • @ErikOsterlund-pu6pn
      @ErikOsterlund-pu6pn ปีที่แล้ว

      Nah it isn’t a short branch, so I don’t believe it can fuse. Certainly behaves as if it can’t as well.

  • @xichenliu-w3r
    @xichenliu-w3r ปีที่แล้ว +2

    Thread-local gc sounds really promising, can I ask if thread-local gc would be applied to the whole application with both platform thread and virtual thread supported? or thread-local gc would only be applied to virtual threads only, and zgc would be used on platform threads?

    • @ErikOsterlund-pu6pn
      @ErikOsterlund-pu6pn ปีที่แล้ว +2

      Thread local GC in the general case tends to have to deal with roots that are live. But I want a free lunch, and you only get that when a thread terminates, because then it has no frames and hence no GC roots you have to trace from. To optimize for short lived threads makes the most sense in the context of virtual threads, so that will at least be the initial focus.

  • @Bamloop
    @Bamloop ปีที่แล้ว

    20:37 I don't quite understand what it means, why alignment ensure address low order bits are zero?

    • @ErikOsterlund-pu6pn
      @ErikOsterlund-pu6pn ปีที่แล้ว +2

      It means the addresses are always multiples of 8, meaning it will end with 8, 16, 24, 32, etc. Or in binary: 1000, 10000, 11000, 100000, etc. Note how they all end with at least 3 zeros. Makes sense since multiplying an integer by 8 is equivalent to shifting its bits left 3 positions.

    • @Bamloop
      @Bamloop ปีที่แล้ว

      @@ErikOsterlund-pu6pn Oh, thank you for the explanation!

  • @krellin
    @krellin 10 หลายเดือนก่อน

    why cant peopole properly explain how it works and when does it get advantage... just laying out useless implementation details that not necessarily cover either... the proper thing to benchmark this against is shenandoah GC.

    • @delabassee
      @delabassee 10 หลายเดือนก่อน

      You realise that this talk was presented during the latest JVM Language Summit, right? JVMLS is the forum where various JVM implementers discuss... JVM implementations. 😉
      Also, Generational Shenandoah (experimental) support was dropped from the JDK 21 plan in June last year. So, and as of now, there's nothing to benchmark against.

    • @krellin
      @krellin 10 หลายเดือนก่อน

      ​@@delabassee hmm it seems they cut it because it wasnt ready, its a new feature, they simply do not deliver it, which is fine, they are not removing the gc.
      Also most of the java projects are still on JDK 8 even in 2024, so if anything they should benchmark it not on java 21 but earlier versions.