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

2023-10-18 03:20

本文主要是介绍给Java程序员一盏明灯———JVM专家寒泉子访谈录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


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



640?wx_fmt=png寒泉子,技术狂热者,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相关知识和一线案例。

640?wx_fmt=jpeg


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

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

本次大会共有 5 大板块方向,20 场技术专题,70 个互联网架构案例。本届GIAC 已确定有英特尔腾讯、阿里巴巴、百度蚂蚁金服华为科大讯飞、新浪微博、京东、七牛、美团点评、饿了么才云格灵深瞳Databricks等公司专家出席。

寒泉子老师所在的专场是编程语言专场,精彩议题如下:

640?wx_fmt=jpeg

更多专场议题可点击「阅读原文」查看,大会正在如火如荼的进行中,现在报名可享88折优惠,快来报名和我们一起参会吧!

这篇关于给Java程序员一盏明灯———JVM专家寒泉子访谈录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/229837

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows