industryhive
V2EX  ›  Java

JDK16 发布, GC 最大暂停时间缩短到 1 毫秒,平均暂停时间 0.05 毫秒,有人体验过没?

  •  2
     
  •   industryhive · Mar 29, 2021 · 10936 views
    This topic created in 2046 days ago, the information mentioned may be changed or developed.

    除了 GC 的进步之外,我比较关心的还有 project panama 、project valhalla 和 project loom 这三个项目的进展情况,比较可喜的是,project panama 进展顺利,其中外部存储器访问 API 让 java 开发者利用堆外内存不再需要写 unsafe 了。project valhalla 已经初现曙光,今年 9 月份的 JDK17 可能发布 project valhalla 的预览版本,这个是 java 自定义值类型、泛型的重要组成。还有 project loom,java 的协程,目前看来进展不太顺利。。

    鉴于本人还在用 JDK8,还是想问下,有人体验过没?等到 JDK17 发布,我将会从 JDK8 直接迁移到 JDK17,跳过 11 。各位对即将到来的 JDK17 有什么期待?

    50 replies  •  2021-04-09 15:28:53 +08:00
    rockddd
    rockddd
    Mar 29, 2021❤️6
    1
    我也想迁移到 17,但是公司不想
    yitingbai
    yitingbai
    Mar 29, 2021
    2
    很多公司的业务代码离 jdk8 的性能瓶颈还远得很, 切换带来的麻烦与风险远高于带来的优势. 我们公司技术氛围浓厚, 新项目尝试了 jdk11, 但是老项目实在不敢折腾
    337136897
    337136897
    Mar 29, 2021
    3
    我也想迁移到 17,但是公司不想
    brust
    brust
    Mar 29, 2021
    4
    我也想迁移到 17,但是公司不想
    lakehylia
    lakehylia
    Mar 29, 2021
    5
    除非 api 限制只能使用某个版本,不然已有的项目都不会有动力迁移的。迁移的前提是有 KPI 。
    industryhive
    industryhive
    OP
    Mar 29, 2021
    6
    @yitingbai
    @lakehylia 老项目不动,新项目可以用新版本了。
    JB18CM
    JB18CM
    Mar 29, 2021
    7
    我也想迁移到 Kotlin,但是公司不想
    dqzcwxb
    dqzcwxb
    Mar 29, 2021
    8
    不迁移,所以不学习也不关心
    th00000
    th00000
    Mar 29, 2021
    9
    ZGC 在之前几个版本就已经可以用了, 针对特大内存有奇效, 一般服务器用起来也挺爽, 主要是零配置跑的就很快, 对于一般的服务器现在的 G1 表现也已经够好了。
    xbh1794970183564
    xbh1794970183564
    Mar 29, 2021
    10
    小公司没必要, 大公司成本太大
    industryhive
    industryhive
    OP
    Mar 29, 2021
    11
    @th00000 G1 生不逢时啊,java9 之后才可用,但是没几个版本又碰上了 ZGC 。。。
    dbpe
    dbpe
    Mar 29, 2021
    12
    所以 JVM GC 调优还是否有必要呢...人生苦短..我选择 ZGC/G1
    dbpe
    dbpe
    Mar 29, 2021
    13
    @industryhive java8 也有了..但是有问题..我记得某代不能回收释放(重启破万法).到 java11 才解决...
    dbpe
    dbpe
    Mar 29, 2021
    14
    @th00000 前几代的问题好像是会降低吞吐量..这个问题到 Java16 也搞定了
    th00000
    th00000
    Mar 29, 2021
    15
    @industryhive #11 何为生不逢时? JDK 11 作为 LTS 版本, G1 有最广泛的应用, 一直都在进行大量的优化, 现在也可以做到很少的配置就能有优秀的表现。即使是 JDK 17 LTS 之后, 也有不可替代的分量。
    Jooooooooo
    Jooooooooo
    Mar 29, 2021
    16
    ZGC 这个往后普及开来感觉是给 java 带来第二次生命.
    th00000
    th00000
    Mar 29, 2021❤️1
    17
    @dbpe #14 吞吐量、响应时间、内存占用三者不可兼得, 只能取其二, G1 的默认配置在吞吐量表现上稍差是为了换取另外两者的优秀表现, 如果需要大吞吐量比如 Logstash 这种同时不想进行精细调整的话, 则可以选择 CMS
    industryhive
    industryhive
    OP
    Mar 29, 2021
    18
    @Jooooooooo 我认为给 Java 带来第二次生命的不是 ZGC,而是 project panama/project loom/project valhalla,尤其是 project panama 和 project valhalla,这两个项目可以让 java 程序逼近物理机的性能极限,GC 反而成了次要的了。
    someonedeng
    someonedeng
    Mar 29, 2021
    19
    等一个 java17, 目前的项目还是 jdk8
    sadfQED2
    sadfQED2
    Mar 29, 2021 via Android
    20
    我司连 G1 都还没用上呢,17 不知道哪年才用的上
    bthulu
    bthulu
    Mar 29, 2021
    21
    ZGC 虚拟内存占用翻三倍, 一堆相关监控软件及 linux 内核不针对性升级处理, 谁敢用
    mlcq
    mlcq
    Mar 29, 2021
    22
    @dbpe 有啥问题,jdk8 已经可以用了,只是不是默认的垃圾收集器而且,怎么可能存在不能回收的问题,只是后期版本会更优化而已
    Vindroid
    Vindroid
    Mar 29, 2021
    23
    不是你想不想,而是公司让不让,以及有没有做好跑路的准备。
    只要公司内大神没力推 JDK 新版本,我就不会去动它。
    icyalala
    icyalala
    Mar 29, 2021❤️2
    24
    大家都想要获得它的特性,但是不愿意承担带来的风险
    dbpe
    dbpe
    Mar 29, 2021
    25
    @mlcq 具体我得找下..当初我在阿里 JVM 大佬的公众号上了解的.大意就是有效部分的内存无法回收,JAVA11 解决了.
    zliea
    zliea
    Mar 29, 2021
    26
    面向 spring 编程,坐等 spring 支持。
    mlcq
    mlcq
    Mar 29, 2021
    27
    @dbpe 你这个是道听途说而已,有些公司线上都是 jdk8 + g1 的
    jason19659
    jason19659
    Mar 29, 2021
    28
    @industryhive #10 g1 1.8 就可以用了吧
    dgsrz
    dgsrz
    Mar 29, 2021
    29
    我也想迁移到 17,但是公司不想
    40EaE5uJO3Xt1VVa
    40EaE5uJO3Xt1VVa
    Mar 29, 2021
    30
    springboot 用啥我用啥
    BBCCBB
    BBCCBB
    Mar 29, 2021
    31
    loom 真的是遥遥无期.
    Lemeng
    Lemeng
    Mar 29, 2021
    32
    一般公司动起来得花些人力,非不必要,不会动的
    早想了,没办法
    youyang
    youyang
    Mar 29, 2021
    33
    我们还是 jdk8 + cms 呢
    zhuangzhuang1988
    zhuangzhuang1988
    Mar 29, 2021
    35
    ![a54d82377580e2e2c63d13ccc2c2a728.png]( https://xn--wcso9o.xn--fiqs8s/images/a54d82377580e2e2c63d13ccc2c2a728.png)
    1daydayde
    1daydayde
    Mar 29, 2021 via iPhone
    36
    老版本 es 用上 G1GC 已经两三个月没崩了( doge
    Goooogle
    Goooogle
    Mar 29, 2021
    37
    在线上跑了一周,堆大小 2G
    平均暂停时间 0.05ms 一点也不夸张,测试显示最小也就 0.025
    最大暂停时间测试显示有点抖,从几 ms 到几十 ms

    phase: pause mark end 0.000 / 0.000 0.013 / 0.036 0.013 / 0.210 0.013 / 0.242 ms
    [Phase: Pause Mark Start 0.000 / 0.000 0.027 / 0.054 0.021 / 0.218 0.025 / 6.534 ms
    Phase: Pause Relocate Start 0.000 / 0.000 0.012 / 0.053 0.009 / 0.086 0.009 / 0.266 ms
    Subphase: Pause Mark Try Complete 0.000 / 0.000 0.000 / 0.000 0.006 / 0.013 0.004 / 0.063 ms
    Goooogle
    Goooogle
    Mar 29, 2021
    38
    格式乱了 补个图
    i.imgur.com/92rIInV.png
    intmax2147483647
    intmax2147483647
    Mar 29, 2021
    39
    我也想迁移到 TypeScript,但是公司...也想[🐶]。用啥 Java...
    matrix67
    matrix67
    Mar 29, 2021❤️1
    40
    这又让我想起了这篇雄文 < IT runs on Java 8 > https://veekaybee.github.io/2019/05/10/java8/

    hn: https://news.ycombinator.com/item?id=19877916
    cco
    cco
    Mar 29, 2021
    41
    一步到 17,结果发现要和其他项目集成,然后又发现他们的项目用的 1.6,各种包老的不行,你还得引用他们的依赖,到时候哭去吧。建议到 11 就行,一步一步来,步子大了容易扯到蛋。
    fyooo
    fyooo
    Mar 29, 2021
    42
    @cco 老哥看来是过来人
    cubecube
    cubecube
    Mar 29, 2021
    43
    很多工具集不支持也没办法呀。比如 idea 在 jdk16 也跑步起来 doge
    arloor
    arloor
    Mar 29, 2021
    44
    组里大佬分享过,然后看了美团技术博客的 ZGC 文章,自己的小项目就用起来了
    https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html

    PS:编译使用 jdk8,运行使用 jdk11+就行了,仅用少量 sun 的类改变了。

    PS:为啥一个 ide 也要在 jdk16 跑起来呢?等到 6 个月后 jdk17 发布,jetbrains 的 jbr 肯定也升到 jdk17 版本了。别说 idea 不跟 jdk 版本
    q149072205
    q149072205
    Mar 30, 2021
    45
    jdk8 再战个十年八年不是问题。。
    lewis89
    lewis89
    Mar 30, 2021
    46
    @th00000 老哥,我请教一下,ZGC 在停顿优化的问题的上

    是不是用 mfence 做可见性,这样在标记整理 标记复制的时候 用 mfence 避免因为引用对象的内存地址发生改变 而需要暂停业务线程的时间..

    据我所知 mfence 这些可见性的指令 开销很大.. 会让很多 L1 L2 失效吧..
    shawn102400
    shawn102400
    Mar 31, 2021
    47
    @arloor 这不是脱了裤子放屁多此一举么,用 jdk11 运行又用不了 11 的新特性,出于啥想法。
    arloor
    arloor
    Apr 1, 2021
    48
    @shawn102400 你的头怕是塞在你裤子里。jdk11 的 jvm 有 ZGC,jdk8 有吗?喷很简单,SB 也很简单
    shawn102400
    shawn102400
    Apr 7, 2021
    49
    @arloor 笑了,不知道还以为 jdk8 满足不了你这几亿并发量的项目呢,原来是几个人访问的小项目也想着搞 jvm 优化。
    arloor
    arloor
    Apr 9, 2021
    50
    @shawn102400 满嘴喷粪,您请继续
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5381 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1523ms · UTC 03:23 · PVG 11:23 · LAX 19:23 · JFK 22:23
    ♥ Do have faith in what you're doing.