2018.11.15 丨 msup

给Java程序员一盏明灯———JVM专家寒泉子访谈录

2018.11.15 丨 msup

导读:11 月 23 ~ 24 日,GIAC 全球互联网架构大会将于上海淳大万丽酒店举行。GIAC 是msup和高可用架构技术社区联合推出的面向架构师、技术负责人及高端技术从业人员的技术架构大会。今年的 GIAC 已经有英特尔、腾讯、阿里巴巴、百度、蚂蚁金服、华为、科大讯飞、新浪微博、京东、七牛、美团点评、饿了么、才云、格灵深瞳、Databricks等公司专家出席。


在大会前夕,高可用架构采访了2018年 GIAC编程语言分论坛 出品人寒泉子,就目大家广泛关注的JVM方面的问题进行了访谈。



寒泉子,技术狂热者,JVM相关公众号“你假笨”的作者,2010年毕业进入阿里(花名寒泉子)开始从事Java中间件(目前蚂蚁已开源的SOFA框架)研发,2014年底转入阿里JVM团队进行JVM相关工作,在阿里为同事们解决过无数的JVM性能问题,并开发了被阿里人广为使用的阿里性能分析平台。2017年底成立PerfMa公司开始创业,致力于为企业提供性能优化的产品解决方案,希望在阿里的一些经验能普惠整个互联网行业,为企业节省成本,降低招人门槛,帮助企业提升整体技术实力,协助企业高速发展,目前正在筹划JVM社区jcafebabe方便为大家提供JVM交流。


高可用架构:请简单介绍下自己为什么进入JVM研发这一领域

寒泉子:我进入Java领域其实都是一个偶然,因为最早进阿里之前我是做Flash/Flex的,当时差点就去做页游去了。进阿里后从事Java框架的研发工作,并开始深入学习Java,学习JVM也是平时对技术比较好奇,帮助小伙伴们看各种JVM性能问题,一开始也是完全摸不着头脑,通过把OpenJDK源码下载下来连蒙带猜地去解决,随着解决的问题越来越多,看的代码越来越多,并且通过调试JVM不断验证自己的想法,慢慢地对整个JVM运行机制有了比较全面的了解,这样才算慢慢步入了JVM这个领域。

高可用架构:怎么看待前段时间炒的沸沸扬扬的Oracle JDK收费事件

寒泉子:收费不收费前段时间闹得确实挺大,有些自媒体为了博得眼球确实带有标题党的性质,自己估计都没有认真了解相关的协议。总的来说是,Java仍然是可以免费使用的,只是有后续相关的更新不会在官方发布了,如果想要这些更新,需要付费,当然也可能存在一些重大的安全问题,不过我个人觉得我们可以使用OpenJDK,这个其实在Oracle官方下载平台上就有下载的链接,OpenJDK是GPL协议的,我相信当真的有一些重大的安全问题,社区会帮忙解决的。

高可用架构:对于Java工程师来说,有哪些JVM知识是必须学习的?对于想深入学习Jvm的工程师来说,应该怎样入手?

寒泉子:JVM虽然涉及到的知识很多,但是我们常用的其实不多,比如类加载机制,GC,内存分配,JVM参数调优,如果能把这几块了解好完全足以应付我们平时碰到的问题。


每个人的学习方法不一样,我学习JVM的过程是问题驱动的,碰到什么问题就去解决相关的问题,并了解了JVM相关的实现,慢慢地发现掌握的知识越来越多了。这个过程就好比我们玩星际争霸一样,不断去探索我们的地图版块,随着范围不断扩大,串起来后慢慢就有了一个全局的认识了。不过有个我觉得比较通用的建议,那就是有事没事多看看JVM源码。

高可用架构:对于一般JVM性能问题,我们需要从哪些方面入手?有没有系统一点的方法?

寒泉子:我觉得解决JVM性能问题主要是经验+工具+源码,我们知道具体的现象,如果有经验就可以直接解决了,如果没见过那就看有没有什么关键字,如果有关键字可以去找找相应的源码,如果也没什么关键字,但是有比较特殊的现象,比如应用不可用,响应时间变慢等,可以借助一些JVM自带的或者是操作系统自带的一些工具,当然还有不少开源的工具去进一步排查。


高可用架构:从你接触JVM到现在,一定解决了很多JVM问题,能针对您解决的比较典型的JVM问题案例,简单讲讲您的处理过程?

寒泉子:查问题其实就是一个破案的过程,任何蛛丝马迹都不要放过,针对JVM的问题那更加明显了,只要是JVM里输出的内容,那肯定都是有一个上下文的,可以去JVM源码里去搜相关的关键字,然后尝试去还原整个现场,到底是什么情况下可能会发生这个问题,可能涉及到的疑似问题路径会比较多,因此有时候还需要用排除法的思维去把一些路径排除掉,最终找出最有可能的一条问题路径。在这次GIAC大会里我也会提几个比较经典的例子,来说明一般的处理方法,欢迎大家届时莅临探讨。

高可用架构:Oracle已经发布了
GraalVM,我看到有的项目使用GraalVM,性能提升很大,请问GraalVM的适用范围和跟hotspot vm的异同?


寒泉子:GraalVM最主要的特点是纯Java开发的,目的是为了替代JIT编译器C2,主要是C2的维护成本太大,相对于C2最大的优势是在逃逸分析和方法内联的处理上,从JDK10开始,可以通过JVM参数直接开启使用,JDK8~JDK9的系统,需要额外下载GraalVM来使用。至于性能这块,官方测下来,Java workload平均下来大概两三个百分点,使用lambda或者较多新建对象操作的应用的加速比要好一些,Scala workload要好很多,有大概20%的提升。

高可用架构:随着JAVA11发布,新的垃圾收集器zgc也进入大家的视野,请问什么情况下适合用zgc,对比现有的垃圾收集器如cms gc/g1 gc,优劣分别是什么?

寒泉子:超大堆使用ZGC是挺合适的,主要是停顿时间短,官方有基准测试,在128G的大堆下,最大停顿时间才1.68ms,官方提到ZGC暂停时间不会超过10ms,现在很多大数据分析平台使用的内存都很大,使用其他GC算法,在暂停时间上无法保证,不过ZGC只支持64位系统,CMS碎片化问题明显,G1和ZGC不存在碎片的问题,主要他们都是分Region的,不过G1的region的大小是固定的,但是ZGC可以有多种,所以在处理大对象上ZGC要更好点, 另外ZGC和 Parallel Scavenger一样支持numa架构,其他的GC算法不支持。

高可用架构:随着Java进入越来越多的领域,你认为Java程序员应该如何应对?

寒泉子:结合自己的兴趣来选未来发展潜力比较大的领域,如果你对投入的方向没有兴趣,我觉得你整个过程都会是痛苦的,而且不一定有效果,甚至还会迷茫;如果你选择的领域没有发展空间,那未来还是会面临二次选择,当你再选择的时候比别人已经落后一大截了。

高可用架构:请问你如何看待Oracle对Google的官司(Google没有取得授权就在Android中使用Java)?


寒泉子:史上最值钱的几行Java代码,让我意识到专利的重要性吧,大厂之间打架果然不同凡响,具体的我也不做评论啦。

高可用架构:你创业以来,自己最大的感悟是什么?你是如何完成从阿里的JVM技术专家到创业公司CEO的?

寒泉子:最大的感悟是自己要承担的责任越来越大了,以前只要自己,家人吃好住好就行了,现在有一帮兄弟需要生活,大家选择了我们,那就是一份责任,得为他们负责。


在阿里的时候,每天写写代码,给小伙伴们解决解决问题就可以了,交际面也比较窄,每天两点一线。现在每天要做的事,要思考的事多了很多,并且很多都不是技术层面上的事,每天都要通过各种渠道不断去学习,比如睡觉前都会看些包括管理,财务等方面的书籍,还有类似GIAC,QCON这种大会向大家不断学习取经,也会参加一些线下的交流活动,和各个领域的人去交流学习。

高可用架构:对于本届GIAC你有什么寄语?


寒泉子:花了这么多钱当然还是希望大家能从大会上获取到自己需要的东西,认识到一些志同道合的朋友,为自己未来的发展提供一定的帮助。


关注寒泉子公众号,了解JVM相关知识和一线案例。


GIAC全球互联网架构大会将于11月23-24日,上海淳大万丽酒店举办,寒泉子老师将作为出品人、讲师出席。


GIAC是msup和高可用架构技术社区联合推出的面向架构师、技术负责人及高端技术从业人员的技术架构大会。大会汇集一线互联网企业首席架构师及技术型CTO为主的讲师,分享他们在本年度最值得的总结、盘点的实践启示,从业者可快速与业界同步热门及前沿最核心技术,助力企业业务升级及成功转型。


本次大会共有 5 大板块方向,20 场技术专题,70 个互联网架构案例。寒泉子老师所在的专场是编程语言专场,精彩议题如下:

大会正在如火如荼的进行中,扫描图中二维码,即可有机会获得单天体验票!同时登陆官网报名,还可享更优惠价格哦!

媒体联系

票务咨询:赵丹丹 15802217295

赞助咨询:郭艳慧 13043218801

媒体支持:景    怡 13920859305