
除了 GC 的进步之外,我比较关心的还有 project panama 、project valhalla 和 project loo 这三个项目的进展情况,比较可喜的是,project panama 进展顺利,其中外部存储器访问 API 让 java 开发者利用堆外内存不再需要写 unsafe 了。project valhalla 已经初现曙光,今年 9 月份的 JDK17 可能发布 project valhalla 的预览版本,这个是 java 自定义值类型、泛型的重要组成。还有 project loom,java 的协程,目前看来进展不太顺利。。
鉴于本人还在用 JDK8,还是想问下,有人体验过没?等到 JDK17 发布,我将会从 JDK8 直接迁移到 JDK17,跳过 11 。各位对即将到来的 JDK17 有什么期待?
1 rockddd 2021-03-29 10:02:52 +08:00 我也想迁移到 17,但是公司不想 |
2 yitingbai 2021-03-29 10:07:21 +08:00 很多公司的业务代码离 jdk8 的性能瓶颈还远得很, 切换带来的麻烦与风险远高于带来的优势. 我们公司技术氛围浓厚, 新项目尝试了 jdk11, 但是老项目实在不敢折腾 |
3 337136897 2021-03-29 10:07:22 +08:00 我也想迁移到 17,但是公司不想 |
4 brust 2021-03-29 10:08:20 +08:00 我也想迁移到 17,但是公司不想 |
5 lakehylia 2021-03-29 10:10:43 +08:00 除非 api 限制只能使用某个版本,不然已有的项目都不会有动力迁移的。迁移的前提是有 KPI 。 |
6 industryhive OP |
7 JB18CM &bsp;2021-03-29 10:12:10 +08:00 我也想迁移到 Kotlin,但是公司不想 |
8 dqzcwxb 2021-03-29 10:15:24 +08:00 |
9 th00000 2021-03-29 10:15:47 +08:00 ZGC 在之前几个版本就已经可以用了, 针对特大内存有奇效, 一般服务器用起来也挺爽, 主要是零配置跑的就很快, 对于一般的服务器现在的 G1 表现也已经够好了。 |
10 xbh1794970183564 2021-03-29 10:16:48 +08:00 小公司没必要, 大公司成本太大 |
11 industryhive OP @th00000 G1 生不逢时啊,java9 之后才可用,但是没几个版本又碰上了 ZGC 。。。 |
12 dbpe 2021-03-29 10:22:54 +08:00 所以 JVM GC 调优还是否有必要呢...人生苦短..我选择 ZGC/G1 |
13 dbpe 2021-03-29 10:23:35 +08:00 @industryhive java8 也有了..但是有问题..我记得某代不能回收释放(重启破万法).到 java11 才解决... |
15 th00000 2021-03-29 10:24:49 +08:00 @industryhive #11 何为生不逢时? JDK 11 作为 LTS 版本, G1 有最广泛的应用, 一直都在进行大量的优化, 现在也可以做到很少的配置就能有优秀的表现。即使是 JDK 17 LTS 之后, 也有不可替代的分量。 |
16 Jooooooooo 2021-03-29 10:29:44 +08:00 ZGC 这个往后普及开来感觉是给 java 带来第二次生命. |
17 th00000 2021-03-29 10:30:35 +08:00 @dbpe #14 吞吐量、响应时间、内存占用三者不可兼得, 只能取其二, G1 的默认配置在吞吐量表现上稍差是为了换取另外两者的优秀表现, 如果需要大吞吐量比如 Logstash 这种同时不想进行精细调整的话, 则可以选择 CMS |
18 industryhive OP @Jooooooooo 我认为给 Java 带来第二次生命的不是 ZGC,而是 project panama/project loom/project valhalla,尤其是 project panama 和 project valhalla,这两个项目可以让 java 程序逼近物理机的性能极限,GC 反而成了次要的了。 |
19 someonedeng 2021-03-29 10:39:56 +08:00 等一个 java17, 目前的项目还是 jdk8 |
20 sadfQED2 2021-03-29 10:40:26 +08:00 via Android 我司连 G1 都还没用上呢,17 不知道哪年才用的上 |
21 bthulu 2021-03-29 10:40:52 +08:00 ZGC 虚拟内存占用翻三倍, 一堆相关监控软件及 linux 内核不针对性升级处理, 谁敢用 |
&nsp; 22 mlcq 2021-03-29 10:57:52 +08:00 @dbpe 有啥问题,jdk8 已经可以用了,只是不是默认的垃圾收集器而且,怎么可能存在不能回收的问题,只是后期版本会更优化而已 |
23 Vindroid 2021-03-29 11:06:40 +08:00 不是你想不想,而是公司让不让,以及有没有做好跑路的准备。 只要公司内大神没力推 JDK 新版本,我就不会去动它。 |
24 icyalala 2021-03-29 11:12:24 +08:00 大家都想要获得它的特性,但是不愿意承担带来的风险 |
26 zliea 2021-03-29 11:18:30 +08:00 面向 spring 编程,坐等 spring 支持。 |
28 jason19659 2021-03-29 11:26:27 +08:00 @industryhive #10 g1 1.8 就可以用了吧 |
29 dgsrz 2021-03-29 11:27:25 +08:00 我也想迁移到 17,但是公司不想 |
30 40EaE5uJO3Xt1VVa 2021-03-29 11:30:03 +08:00 springboot 用啥我用啥 |
31 BBCCBB 2021-03-29 11:37:24 +08:00 loom 真的是遥遥无期. |
32 Lemeng 2021-03-29 11:47:01 +08:00 一般公司动起来得花些人力,非不必要,不会动的 早想了,没办法 |
33 youyang 2021-03-29 11:59:13 +08:00 我们还是 jdk8 + cms 呢 |
34 zhuangzhuang1988 2021-03-29 12:18:12 +08:00 |
35 zhuangzhuang1988 2021-03-29 12:21:01 +08:00  |
36 1daydayde 2021-03-29 12:55:50 +08:00 via iPhone 老版本 es 用上 G1GC 已经两三个月没崩了( doge |
37 Goooogle 2021-03-29 13:06:58 +08:00 在线上跑了一周,堆大小 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 |
38 Goooogle 2021-03-29 13:08:40 +08:00 格式乱了 补个图 i.imgur.com/92rIInV.png |
39 intmax2147483647 2021-03-29 13:48:44 +08:00 我也想迁移到 TypeScript,但是公司...也想[]。用啥 Java... |
40 matrix67 2021-03-29 14:06:00 +08:00 这又让我想起了这篇雄文 < IT runs on Java 8 > https://veekaybee.github.io/2019/05/10/java8/ hn: https://news.ycombinator.com/item?id=19877916 |
41 cco 2021-03-29 16:57:18 +08:00 一步到 17,结果发现要和其他项目集成,然后又发现他们的项目用的 1.6,各种包老的不行,你还得引用他们的依赖,到时候哭去吧。建议到 11 就行,一步一步来,步子大了容易扯到蛋。 |
43 cubecube 2021-03-29 19:20:53 +08:00 很多工具集不支持也没办法呀。比如 idea 在 jdk16 也跑步起来 doge |
44 arloor 2021-03-29 19:36:44 +08:00 组里大佬分享过,然后看了美团技术博客的 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 版本 |
45 q149072205 2021-03-30 11:25:41 +08:00 jdk8 再战个十年八年不是问题。。 |
46 lewis89 2021-03-30 14:46:06 +08:00 @th00000 老哥,我请教一下,ZGC 在停顿优化的问题的上 是不是用 mfence 做可见性,这样在标记整理 标记复制的时候 用 mfence 避免因为引用对象的内存地址发生改变 而需要暂停业务线程的时间.. 据我所知 mfence 这些可见性的指令 开销很大.. 会让很多 L1 L2 失效吧.. |
47 shawn102400 2021-03-31 17:14:42 +08:00 @arloor 这不是脱了裤子放屁多此一举么,用 jdk11 运行又用不了 11 的新特性,出于啥想法。 |
48 arloor 2021-04-01 10:47:45 +08:00 @shawn102400 你的头怕是塞在你裤子里。jdk11 的 jvm 有 ZGC,jdk8 有吗?喷很简单,SB 也很简单 |
49 shawn102400 2021-04-07 16:47:13 +08:00 @arloor 笑了,不知道还以为 jdk8 满足不了你这几亿并发量的项目呢,原来是几个人访问的小项目也想着搞 jvm 优化。 |
50 arloor 2021-04-09 15:28:53 +08:00 @shawn102400 满嘴喷粪,您请继续 |