JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧

文章目录

  • 前言
  • 一、部分大厂对于 JVM GC 的面试题
    • 1.1、百度
    • 1.2、顺丰
    • 1.3、京东
    • 1.4、淘宝
    • 1.5、阿里、蘑菇街
  • 二、Garbage Collectors(GC)作何使用
  • 三、GC 的十种类型
  • 四、JVM 的版本参数信息
    • 4.1、查看 Java 启动时所有默认的命令行参数
    • 4.2、查看 Java 启动时 GC 的参数信息
  • 五、GC 的分代模型与分区模型
    • 5.1、分代模型
      • 5.1.1、新生代
      • 5.1.2、老年代
  • 总结


前言

现在除了一些有工作和开发经验的大神,基本很少有人在简历上敢写“精通 JVM 调优,有过 JVM 调优经验”,因为应聘者如果写这句话就意味着你的面试将会是很“难过”的,面试官会变着法的问你如何进行 JVM 系列调优,如果你的基础比较薄弱或者是仅仅背面试题速成,那么你很可能在面试中露馅。JVM 作为 Java 的核心,面试后端开发工程师或者架构师这都是必备的技能。既然 JVM 如此重要,那我就在本系列中完整的过一遍,让你敢于在简历上写“精通 JVM 调优,有过 JVM 调优经验”,薪资涨 5k!

在这里插入图片描述


在聊 JVM 调优和 GC 之前,我们先看看当下就业环境中面试对于 JVM 和 GC 的一些相关面试题,看看企业开发岗需要什么样的人才。

一、部分大厂对于 JVM GC 的面试题

说明:以下数据来源于 2019~2020 年一些大厂的面试题。

1.1、百度

  • CMS 和 G1 的异同。
  • G1 什么时候引发 FullGC?
  • 说一个最熟悉的垃圾回收算法。
  • 吞吐量优先和响应时间优先的回收器有哪些?

1.2、顺丰

  • 怎么判断内存泄漏?
  • 讲一下 CMS 的流程。

1.3、京东

  • 为什么压缩指针超过 32G 失效?

1.4、淘宝

  • 什么是内存泄漏?GC 调优有经验吗?一般出现 GC 问题你怎么解决?

1.5、阿里、蘑菇街

  • ThreadLocal 有没有内存泄漏问题?
  • G1 两个 Region 不是连续的,而且之间还有可达的引用,我现在要回收一个,另一个怎么处理?
  • 讲一下 JVM 堆内存管理(对象分配过程)。
  • 听说过 CMS 的并发预处理和并发可中断预处理吗?
  • 到底多大的对象会被直接扔到老年代?

看了面试题,作何感想?可能有人觉得简单,有人一知半解,听过但是不会。不要急!我们慢慢来。

二、Garbage Collectors(GC)作何使用

首先我们都知道,在 Java 当中,我们在创建一个对象之后,就可以无需再去管它,该对象不被使用变成一个垃圾之后,谁去进行处理?Garbage Collectors(垃圾回收器)。

备注:后续文章内容 Garbage Collectors 皆用 GC 代替。

三、GC 的十种类型

JVM 作为 Java 的枢纽,管理着全部的内存,而对于内存的分配和回收就是由垃圾回收器来控制。

从 JVM 的诞生到现在 2021 年,一共产生过十种类型的垃圾回收器,如下图所示:

在这里插入图片描述
这里呢大家可以对这十种垃圾回收器仅作了解,我们将会在后续的章节中一一为大家介绍。

四、JVM 的版本参数信息

现在企业开发绝大多数使用的版本为 1.8。我本地的开发版本也是 1.8,我们就通过该版本来进行演示。

在这里插入图片描述
如果我们直接将程序部署到 JVM 上,没有做过任何调优动作,1.8 版本的默认 GC 为 Parallel

可能有人会有疑问:如何查看开发环境下 JVM 默认的 GC 版本信息呢?别急,往下看。

首先我们来认识以下几个命令,我们打开 CMD 命令界面。

4.1、查看 Java 启动时所有默认的命令行参数

输入以下 Shell 命令:

java -XX:+PrintCommandLineFlags

这是我们就可以看到打印出的 Java 启动时所有默认的命令行参数,如下图所示:

在这里插入图片描述

4.2、查看 Java 启动时 GC 的参数信息

如果只需要查看本地环境下的 GC 参数信息,我们输入如下 Shell 命令即可:

java -XX:+PrintCommandLineFlags -version

我们可以从控制台的返回信息得知,1.8.0_251-b08 版本所对应的默认 GC 为 Parallel,如下图所示:

在这里插入图片描述

五、GC 的分代模型与分区模型

上面我们已经说到,内存的分配和回收就是由垃圾回收器来控制。

我们将 GC 的使用分为两大类,分别是:分代模型分区模型

  • 分代模型:两个垃圾回收器混合控制系统中的垃圾回收。
  • 分区模型:不再分代,一个垃圾回收器就足够。

在本节中我们将着重对分代模型进行介绍。

5.1、分代模型

分代模型将内存分为两个大的部分,新生代和老年代

如下图所示,左半部分为新生代,右半部分为老年代:

在这里插入图片描述
新生代和老年代所对应的回收算法应用

  • 新生代大量死去,少量存活,采用复制算法。
  • 老年代存活率高,回收较少,采用MC或MS。

5.1.1、新生代

刚刚诞生的的对象为“新生”,存放在新生代区域里面。随着程序的运行,大部分“新生对象”被垃圾回收。

5.1.2、老年代

垃圾回收器回收了多次没有回收掉的对象被称为“老年”,就被存放在老年代中。

在默认情况下 JDK 1.8 没有调参数、调优用的就是 GC 的分代模型。


总结

在本文中我们通过面试题知道了大厂开发对于 JVM 的要求,暂时了解在 JVM 中存在的十种 GC,学会如何查看本地开发环境默认的 GC,掌握了 GC 的两种使用方式,分代模型与分区模型,明白什么样的对象属于什么代,存放在内存中的什么位置。同时,在新生代和老年代中又会诞生各种各样的垃圾回收算法,我们将在下一小节讲解。

在这里插入图片描述


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ip地址合不合法怎么看_电子印章合不合法?两部门再发意见认定

近日,最高法、国家发改委联合发布 《关于为新时代加快完善社会主义市场经济体制提供司法服务和保障的意见》以助力经济高质量发展、建设高标准市场体系为出发点和落脚点,从市场主体、产权保护、公平交易、市场秩序、民生保障、服务开放、高效解纷等七个方…

JVM 调优 2:GC 如何判断对象是否为垃圾,三色标记算法应用原理及存在的问题?

文章目录前言一、如何判断一个对象是否为垃圾?1.1、reference count(引用计数)1.2、reference count(引用计数)存在的问题二、Root Searching(根可达算法或根搜索算法)2.1、Root Searching 释义…

班尼机器人怎么拆_博鼎建筑科技外墙错台打磨机器人和外墙螺杆洞封堵机器人—自升造楼平台1+N执行器...

继上期的混凝土整平机和智能喷淋养护系统,本期给大家介绍的是实际应用在自升造楼平台外墙环轨车上的外墙错台打磨机器人和外墙螺杆洞封堵机器人。外墙错台打磨机器人传统外墙错台处理,需要人工拿凿具对外墙面错台进行凿平处理。凿具重、操作人工容易疲劳…

架构师基础必备:“腹有诗书气自华”,驰骋一线大厂不是梦,抓紧收藏

文章目录前言一、软件1.1、何为软件?1.2、计算机软件的分类1.2.1、系统软件1.2.2、应用软件1.3、软件系统体系结构1.3.1、C/S 结构(桌面应用程序)1.3.2、B/S 结构(Web 应用程序)1.3.3、Web 服务器与数据库服务器1.3.4、…

JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新

文章目录前言一、Oracle Java SE 产品版本二、Java SE 8 的公共更新结束三、参考文档总结前言 几十年来,Java 生态系统已经成功地经历了这个过程,经历了十次主要的平台修订。长期强大的向后兼容性保护了整个生态系统的投资。同时,随着时间的推…

multisim中轻触开关在哪_现货供应轻触开关|品质确保|厂家直销

轻触开关是现今社会生活当中不可或缺的电子元器件之一,那么大家在使用的过程当中是否注意到一些细节问题。首先,我们要注意产品的放置要尽量避免接触腐蚀性气体以及过于潮湿的环境,这样很容易造成产品的损坏,减少轻触开关的使用寿…

DDoS 攻击与防护(一):如何识别 DDoS 攻击?DDoS 防护 ADS 服务有哪些?

文章目录前言一、什么是 DDoS 防护 ADS?1.1、什么是 DDoS 攻击?1.2、如何识别 DDoS 攻击?1.3、从 Web 访问流程分析 DDoS 攻击1.4、DDoS 攻击类型二、DDoS 防护 ADS 介绍2.1、Anti-DDoS 流量清洗2.2、DDoS 原生高级防护2.3、DDoS 高防三、DDo…

收藏功能_六款多功能榻榻米,装完你家会大一半!超实用,收藏

原标题:六款多功能榻榻米,装完你家会大一半!超实用,收藏当今社会城市的生活压力大,在外日夜打拼,回到家中只想做一个慵懒派,随性舒适的榻榻米,功能样式丰富,能让你彻底释…

混凝土墙开洞_新乐专业混凝土切割报价适中

新乐专业混凝土切割报价适中粘碳纤维加固,屋顶加层。本公司采用目前的钢筋混凝土切割结构分离和水钻排孔技术。真正实现对不同规格和形状的桥梁、道路、烟囱、建筑立柱、钢筋砼墙体、砖混结构墙体、建筑大梁等建筑物、构筑物实施无损切割(传统的建筑改造或局部拆除分…

class触发后让另一个class加样式_Bootstrap的按钮组样式

将一系列的.btn包裹在.btn-group内&#xff0c;并使用我们提供的插件&#xff0c;可以实现选择按钮、选取块状区的行为功能。<div class"row mt-5 d-block"><div class"btn-group"><button class"btn btn-primary">Left</b…

bsp模型适用于图计算_【论文解读】目标检测之RFBnet模型

原创声明&#xff1a;本文为 SIGAI 原创文章&#xff0c;仅供个人学习使用&#xff0c;未经允许&#xff0c;不能用于商业目的。其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》&#xff0c;清华大学出版社&#xff0c;雷明著&#xff0c;由SI…

win10雷电3接口驱动_“雷电3”接口知识大科普

近年来部分高端笔记本电脑在接口上会采用一种叫“雷电3”的新接口。今天小编就为大家解读一下“雷电3”接口的特性。最早的雷电接口雷电接口是由Intel开发定制的、接口类型为mini DP&#xff0c;在雷电3接口出来之前&#xff0c;雷电1和雷电2都是作为在苹果MAC上使用的&#xf…

springboot怎么返回404_深度分析:SpringBoot异常捕获与封装处理,看完你学会了吗?...

简介日常开发过程中&#xff0c;难免有的程序会因为某些原因抛出异常&#xff0c;而这些异常一般都是利用try &#xff0c;catch的方式处理异常或者throw&#xff0c;throws的方式抛出异常不管。这种方法对于程序员来说处理也比较麻烦&#xff0c;对客户来说也不太友好&#xf…

新生成长记;关于zzulioj1056,幸运数字

刚刚接触代码的我&#xff0c;对计算机愈来愈好奇&#xff0c;开学的两个月&#xff0c;几乎没看书只顾着做题&#xff0c;当然&#xff0c;不会就百度&#xff0c;或者看大佬的博客&#xff0c;这些都是好东西&#xff0c;实在看不懂的&#xff0c;就拿着跑去问学长&#xff0…

获取form表单_【第1535期】前端 Form 的表单的一个通用解决方案

前言今日早读文章由阿里布达投稿分享。布达&#xff0c;Alibaba Fusion项目组的。花名潕量。主要专注在设计系统、组件、可视化搭建这个领域正文从这开始&#xff5e;&#xff5e;Fusion Next - Form 表单解决方案前端的Form 表单主要用于解决数据获取、数据校验、数据赋值 这三…

react取消捕获_React学习笔记(三)

React学习笔记&#xff08;三&#xff09;&#xff0c;组件的生命周期React中组件也有生命周期&#xff0c;也就是说也有很多钩子函数供我们使用, 组件的生命周期&#xff0c;我们会分为四个阶段&#xff0c;初始化、运行中、销毁、错误处理(16.3之后)初始化在组件初始化阶段会…

快捷键_AutoCAD 2021中的默认快捷键、新建或编辑快捷键

文&#xff1a;CAD钟日铭。欢迎关注和点赞支持。在使用AutoCAD进行制图的过程中&#xff0c;掌握一些快捷键会提高操作效率。所谓的快捷键是指用于启动命令的键组合。例如&#xff0c;按CtrlN组合键(快捷键)新建图形文件&#xff0c;按 CtrlO组合键可打开图形文件&#xff0c;按…

出现画面抖动_连续抖动20小时!虎门大桥桥面如波浪翻滚,专家:个人感觉没问题...

前两天(5月5日)&#xff0c;虎门大桥桥面出现如波浪翻滚的起伏&#xff0c;引发广泛的关注&#xff1a;次日&#xff0c;广东交通集团通报&#xff0c;虎门大桥震动是涡振现象&#xff0c;悬索桥结构安全。专家初步判断此次涡振和桥上设置水马有关。但直到6日早上11时&#xff…

安全模式 提权_记一次渗透挖洞提权实战

摘要&#xff1a;这是一次挖掘cms通用漏洞时发现的网站&#xff0c;技术含量虽然不是很高&#xff0c;但是也拿出来和大家分享一下吧&#xff0c;希望能给一部分人带来收获。0x01 进入后台在通过googlehack语法挖掘beescms时发现了这个站点利用网上的payload&#xff0c;在/mx_…

win7无法连接打印机拒绝访问_“Windows无法连接打印机,操作失败,错误为0x000003e3”...

请求大家帮助&#xff0c;昨天在共享打印机时出现“Windows无法连接打印机&#xff0c;操作失败&#xff0c;错误为0x000003e3”。在百度百科查询的资料修改了都不行(在不重装系统前提下&#xff0c;联想台式机都是win732位系统)&#xff0c;给大家一一列举&#xff0c;请求广大…