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》

如何参加训练营?

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

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

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

  1. 字节跳动二号人物——山西人张利东

    数据猿 最新招聘公告: ①阿里数据中台品牌团队杭州四大职位虚位以待 ②蚂蚁金服大数据部2020实习生招募全面启动 ③TalkingData北京招资深银行行业BD... ④数数科技上海招大数据运维支持工 ...

  2. 非计算机转后台开发并入职字节跳动(四)--再回业务后台开发,头条工作体验

    比较顺利的通过了头条的社招面试,当时头条筛简历的时候还有个小插曲,因为同时在官网投了两个岗位,开始收到了简历不过的短信,没过多久又收到了面试预约的电话.也就是大厂都是不同部门的同一个岗位要求不一样.同 ...

  3. 小程序开发教程,字节跳动Android三面凉凉,一篇文章帮你解答

    开篇 说一下我大概的情况.渣本毕业,工作已经有快3年了,从高中就开始玩小破站.无论是学习还是日常放松都是在b站.大学主学的软件技术专业,所以,入职bilibili是我大学时期给自己定的小目标. 在学校 ...

  4. 非计算机行业转行后台开发入职字节跳动

    入门后台的开发. 因为每个人都在上网,毕业季节也随着大流进入了这个行业,但水平有限,通过学历进入小工厂写PHP背景,有些是python背景.业务是b方,即面向企业,流量小,技术难易度低,一天几个人都没 ...

  5. 字节跳动二面:你能说说“抖音直播”怎么测试么?

    最近几个月都处于找工作黄金期--金九银十,所以有很多粉丝都收到了 offer.从粉丝的反馈回来的面试中,我们发现除了像测试工具.自动化测试.性能测试等这些提升技能之外,必然要被面试官考验到的一个技能就 ...

  6. 四面阿里Java开发岗,字节跳动Java实习面试凉凉经

    开头 我们面试的时候 ,经常会被问这种到问题:Spring中bean的循环依赖怎么解决? Spring中bean的加载过程? spring相关的问题一直是大厂面试常问到的一个问题,也是一直困扰这我们, ...

  7. Java小程序开发实例!字节跳动Java岗经典面试真题,实战解析

    前言 总有一天你会明白,你的努力终究没有白费 年前辞职,人算不如天算,突如其来的疫情完全把自己的计划给打碎了,面试难度简直不亚于一场江苏高考题,后悔.焦虑不安.失眠成了我的生活状态. 从三月底开始投递 ...

  8. 字节跳动 android 二面,今天字节跳动二面碰到个Java面试题,有大佬会吗?

    微雨人先绣2021-05-17 08:43:52 点灭只看此人举报 将马分成A.B.C.D.E五组. 第1-5次比赛:各组分别进行比赛,决出各组名次 A1.A2.A3.A4.A5, B1.B2.B3. ...

  9. java后端简历项目经历_为了面试字节跳动后端开发岗(Java)鬼知道我经历了什么.....

    字节跳动的招聘十分火热,基本上全年都是铺天盖地的宇宙条的招聘信息.但是其实录取率并不高. 无论是找后端方向还是其它方向,我相信整个面试的过程和时间节点都能对你有一定的帮助.字节跳动的面试流程基本上是我 ...

最新文章

  1. Oracle-临时表空间(组)解读
  2. python程序后台运行的实现
  3. PHP-FPM对比Swoole:Swoole多了Reactor线程监听Socket 句柄的变化 代码初始化一次不结束进程 ws tcp mqtt服务
  4. linux realvnc教程,Linux下RealVNC Enterprise 的安装和使用
  5. 笔记本电脑电源已接通未充电_dell xps15 电源已接通 未充电 维修方法
  6. libev源码分析--常用的watcher
  7. C语言 break 和 continue - C语言零基础入门教程
  8. 程序员和码农,有什么本质上的区别?
  9. Android客户端和服务器端数据交互的第四种方法
  10. MySQL导入数据出错
  11. Mybatis源码分析之Mapper文件解析
  12. Tableau最新版安装下载
  13. Word文档压缩技巧,你不得不知道
  14. UE4遇到的各种奇葩问题
  15. CSS3实现毛玻璃(图片模糊)效果
  16. 靠股票能改变普通人命运吗?
  17. XSL的一些基础知识!
  18. 手机邮箱怎么弄_安卓手机如何接收邮件 教你安卓手机邮箱设置方法
  19. R语言ggplot2可视化:使用patchwork包(直接使用加号+)将两个ggplot2可视化结果横向组合、接着再和第三个图像横向组合起来(三幅图各占比例为50%、25%、25%)
  20. maven java archetype_使用maven创建Archetype

热门文章

  1. ISO工具集合,好用推荐,喜欢就下载使用
  2. python 提取出图片特定区域的平均rgb值
  3. 2022-2028全球与中国陆地和海洋测绘市场现状及未来发展趋势
  4. 双目视觉(一)-相机标定及各坐标系间转换关系
  5. git从远程仓库拉取指定日期版本的代码到本地
  6. 微信公众平台接口程序搜索音乐
  7. 每日分享 环境报错:Exception in thread “main“ java.lang.RuntimeException: Cannot create staging directory
  8. Hyper-V新建Windows7虚拟机
  9. python求助神器_【python从零开始(被称之为神器的装饰器)】- 环球网校
  10. 在家看片利器,有Android App以及桌面应用(已开源)。