除了 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 有什么期待?
1
wxw752 2021-03-29 10:02:52 +08:00 6
我也想迁移到 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 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 1
@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 内核不针对性升级处理, 谁敢用
|
23
Vindroid 2021-03-29 11:06:40 +08:00
不是你想不想,而是公司让不让,以及有没有做好跑路的准备。
只要公司内大神没力推 JDK 新版本,我就不会去动它。 |
24
icyalala 2021-03-29 11:12:24 +08:00 2
大家都想要获得它的特性,但是不愿意承担带来的风险
|
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
![a54d82377580e2e2c63d13ccc2c2a728.png]( https://xn--wcso9o.xn--fiqs8s/images/a54d82377580e2e2c63d13ccc2c2a728.png)
|
36
0312birdzhang 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 1
这又让我想起了这篇雄文 < 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 满嘴喷粪,您请继续
|