给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

相关文章

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再