给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

相关文章

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Java 8 Stream filter流式过滤器详解

《Java8Streamfilter流式过滤器详解》本文介绍了Java8的StreamAPI中的filter方法,展示了如何使用lambda表达式根据条件过滤流式数据,通过实际代码示例,展示了f... 目录引言 一.Java 8 Stream 的过滤器(filter)二.Java 8 的 filter、fi

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行