做开发3年,字节跳动二面JVM底层被问得哑口无言

1、简述

收集算法是内存回收的方法论,垃圾回收器就是内存回收的具体体现。Java虚拟机规范中对垃圾收集器如何实现并没有任何规定。因此不同的厂商、不同版本提供的垃圾回收器都可能会有很大差别。一般会根据自己应用的特点组合出各个年代所使用的收集器。

2、类别
2.1 Serial 收集器
这是一个单线程收集器。意味着它只会使用一个 CPU 或一条收集线程去完成收集工作,并且在进行垃圾回收时必须暂停其它所有的工作线程直到收集结束。


虽然说Serial收集器在收集的时候需要暂停其它所有工作的线程,但到现在仍然被使用。对比其它的有点就是:简单而高效。在用户的桌面应用场景中,分配给虚拟机管理的内存一般来说不会很大,回收几十兆的新生代,停顿的时间很短,完全可以接受。

2.2 Serial Old 收集器
收集器的老年代版本,单线程,使用 标记-整理算法。

2.3 ParNew收集器
ParNew收集器可以认为是Serial收集器的多线程版本。

2.4 G1收集器
G1收集器是垃圾收集器理论进一步发展的产物,一是基于 "标记-整理" 算法实现的收集器。也就是说不会产生空间碎片。二是它可以非常精确的控制停顿。


G1收集器可以实现在基本不牺牲吞吐量的前提下完成低提顿的内存回收,因为它极力避免全区域的垃圾回收,G1将整个Java堆(新生代、老年代)划分为多个大小固定的独立区域,并且跟踪这些区域里面的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域。

运作步骤:
• 初始标记(Initial Marking)
• 并发标记(Concurrent Marking)
• 最终标记(Final Marking)

• 筛选回收(Live Data Counting and Evacuation)



2.5 CMS收集器
CMS收集器是一种以获取最短回收停顿时间为目标的收集器。适用于希望系统停顿时间端,给用户良好体验的引用。CMS收集器是基于 "标记-清除"算法实现的,它的运作过程分为四个步骤:
  • 初始标记(CMS initial mark):标记 GC Roots 能直接关联到的对象

  • 并发标记(CMS concurrent mark):进行 GC Roots Tracing

  • 重新标记(CMS remark):修正并发标记期间的变动部分

  • 并发清除(CMS concurrent sweep)

其中初始标记、重新标记这两个步骤仍然需要 暂停其它工作线程。初始标记只是标记GCRoot能关联的对象,过程很快。并发标记阶段进行GCRoot Tracing 时间较长,重新标记这个阶段停顿的时间比初始标记阶段的时间要长,但远比并发标记阶段的停顿时间要短。

无论什么级别的Java从业者,JVM都是进阶时必须跨过的障碍。另外不仅在工作还是面试过程中,JVM都是必须要掌握的技术点。如果不懂JVM,薪酬很可能受到影响(近70%的面试者挂在JVM上)。

学习JVM 之后,可以深入理解内存中对象的创建与垃圾回收、代码从编译到加载的过程、日常开发中快速定位性能问题等,这些既是面试中的加分亮点,更是BAT等一线大企业面试中的必问题!

通过加入一个以讲解JVM、Springboot、Mysql等一线大厂必备技术点的4天突击面试公益训练营,可以做到技术知识储备和面试技巧获取两手抓。


为什么要开展「公益训练营」?
这场突如其来的疫病给每个人的生活都造成了或大或小的影响,比如说工作计划被打乱,比如说面试延期等等。而通过开展这次训练营,希望可以帮助程序员获取新的技术知识,以及掌握一些面试经验以备未来之需。
我们的训练营课程将集中在微信群开展,扫码即可快速入群。

这个训练营值不值得加入?
话不多说,以过往学员的真实评价作为辅证。

<<  滑动查看下一张图片  >>


参加这个训练营,你能获得什么?
(1)4节干货满满的课程知识+面经
本次课程是由学院讲师联合打造,课程要点包括对JVM、SpringBoot、 Redis、Mysql等技术知识点的深入讲解,以及相关面试技巧的分享。学院讲师均有一线大厂工作经验,每节课将近两小时,技术理论与项目经验两相结合。


(2)4天VIP服务(提醒到课+疑问解答+作业批改)
助教定时发布直播课链接,点击链接即可极速免费听课。

直播课结束后,学员对针对课堂专题知识点有疑惑的都可以和助教及讲师交流沟通。学员上交讲师布置作业,将由讲师批改后提出建议。

(3)海量互联网真题题库
题库是用来检测技能树的验金石,面试前刷题是顺利通过面试一个不可缺少的步骤。这里赠送一个免费上万套的大厂面试题的题库,从百度阿里腾讯再到滴滴美团网易等一线大厂的面试真题,通通囊括其中。打卡刷题,再也不会忘记学习了!

圆满完成训练营打卡后的奖励是什么?
完成四次听课以及讲师布置作业的小伙伴将可以获得免费包邮书籍《Effective Java》

如何参加训练营? 

长按识别获取群聊二维码,再次扫描即可快速入群。

“山川异域,风月同天。”祝愿疫病的阴霾可以早日散去,也希望大家可以去到理想的大厂,一起努力提升技术吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值