秋招后端开发面试题 - JVM垃圾回收器

devtools/2024/9/25 23:25:26/

目录

  • JVM垃圾回收器
    • 前言
    • 面试
      • 常见的垃圾回收器有哪些?
      • CMS 收集器?
      • G1 收集器
      • 有了 CMS,为什么还要引入 G1?
      • 垃圾收集器应该如何选择?


JVM垃圾回收器

前言

已经找到工作了,分享秋招时的笔记。祝大家都能顺利找到自己心仪的工作。


面试

常见的垃圾回收器有哪些?

  • Serial 收集器:单线程工作的收集器,在垃圾收集时,必须暂停其他所有工作线程,直到收集结束
  • ParNew 收集器:Serial 收集器的多线程并行版本
  • Parallel Scavenge 收集器:与 ParNew 相似,关注点是吞吐量(CPU 中运行用户代码时间/CPU 总消耗时间的比值)
  • Serial Old 收集器:Serial 收集器的老年代版本;单线程收集器
  • Parallel Old 收集器:Parallel Scavenge 收集器的老年代版本
  • CMS 收集器:是一种以获得最短回收停顿时间为目标的收集器
  • G1 收集器:具有局部收集的设计思路和基于 Region 的内存布局

CMS 收集器?

  • CMS 收集器是以获取最短回收停顿时间为目标的收集器
  • 基于标记 - 清除算法实现,垃圾回收过程:
    • 初始标记:单线程运行,标记 GC Roots 能直达的对象
    • 并发标记:无停顿,和用户线程同时运行,从 GC Roots 的直达对象开始遍历整个对象图
    • 重新标记:多线程运行,需要暂停所有用户线程,修正并发标记期间产生对象
    • 并发清除:无停顿,和用户线程同时执行,清理掉标记阶段判断的已经死亡的对象
  • 缺点:
    • 依赖 CPU 资源
    • 无法处理浮动垃圾
    • 收集结束会有大量空间碎片

G1 收集器

  • G1 收集器:具有局部收集的设计思路和基于 Region 的内存布局
  • 垃圾回收步骤:
    • 初始标记:标记 GC Roots 能直达的对象
    • 并发标记:和用户线程同时运行,从 GC Roots 开始遍历对象图
    • 最终标记:标记在并发标记过程中产生的垃圾
    • 筛选回收:指定回收计划,选择多个 Region 构成回收集,把回收集中 Region 的存活对象复制到空的 Region 中,再清理掉旧的 Region 空间

有了 CMS,为什么还要引入 G1?

CMS 有三个明显的缺点:

  • 依赖对 CPU 资源
  • 无法处理浮动垃圾
  • 收集结束会有大量空间碎片

G1 主要解决了内存碎片多的问题

垃圾收集器应该如何选择?

  • Serial:在没有停顿时间要求的单线程处理器上运行
  • Parallel:优先考虑应用程序的性能,对停顿时间没有什么要求
  • CMS/G1:对停顿要求和用户体验有要求的场景

秋招后端开发面试题系列目录
一、Java
1.1 Java基础上
1.2 Java基础下
1.3 Java集合
1.4 JavaIO
1.5 Java多线程上
1.6Java多线程下
二、JVM
2.1 JVM底层原理
2.2 垃圾回收器
2.3 垃圾回收算法
2.4 类加载机制
2.5 运行时数据区
三、MySQL
3.1 MySQL基础
3.2 事务
3.3 索引
3.4 锁机制
3.5 MVCC
四、Redis
4.1 Redis基础
4.2 缓存原理
五、中间件
5.1 RabbitMQ
六、Spring开源框架
6.1 Spring
6.2 Spring MVC
6.3 Spring Boot
6.4 MyBatis
七、操作系统
八、计算机网络
九、设计模式
十、微服务架构
十一、Spring Cloud分布式
11.1 分布式基础
11.2 Spring Cloud
11.3 GateWay
11.4 Nacos
11.5 OpenFeign
11.6 Ribbon
十二、算法
十三、项目


http://www.ppmy.cn/devtools/35063.html

相关文章

图像处理-图像平滑

图像平滑 前言一、概念介绍1.1 图像的平滑1.2 图像中噪声的分类1.3 MATLAB的添加噪音代码 二、空间域平滑滤波2.1 均值滤波2.2 原理计算 总结 前言 在图像的获取、传输和存储过程常常收到各种噪声的干扰和影响,使得图像的质量下降,为了获得高质量的数字…

第08章 IP分类编址和无分类编址

8.1 本章目标 了解IP地址的用途和种类了解分类编址和无分类编址区别掌握IP地址、子网掩码、网关概念及使用掌握子网划分及超网划分方法掌握无分类编址的改变和使用 8.2 IP地址的用途和种类 分类编址:造成地址的浪费,以及地址不够用;无分类编…

基于SpringBoot的教务管理系统 - 源码免费(私信领取)

1. 研究目的 本项目旨在设计并实现一个基于Spring Boot的教务管理系统,以提升学校教务管理效率,优化教学资源配置,提高教学质量,满足学生、教师和管理人员的需求。 2. 研究要求 a. 需求分析 通过调研学校教务管理流程和现有系…

Linux专栏01:Linux发展历史及背景介绍

博客主页:Duck Bro 博客主页系列专栏:Linux专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Linux发展历史及背景介绍 编号:01 文章目录 Linux发展历…

【力扣一刷】代码随想录day44(动态规划part6 - 背包问题专题: 完全背包理论基础、卡码网52、518. 零钱兑换 II、377. 组合总和 Ⅳ )

【完全背包理论基础】 与01背包问题的区别: 1、物品的可取次数:完全背包和01背包问题唯一不同的地方就是,01背包问题的每种物品只能取0次或1次,而完全背包问题的每种物品可以取无限次。 2、遍历滚动数组的顺序:01背包问…

人工智能原理第十三章课后习题(仅供参考)

13.1 举例说明什么是数据,信息与知识,以及他们之间的关系 数据:是客观世界的计量及其最简单的表征方式,数据表现为事实、信号或者符号。 信息:是赋予含义的数据,可通过一些手段进行传播。 知识:…

【Web】CTFSHOW 新手杯 题解

目录 easy_eval 剪刀石头布 baby_pickle repairman easy_eval 用script标签来绕过 剪刀石头布 需要赢100轮🤔 右键查看源码拿到提示 一眼session反序列化 打PHP_SESSION_UPLOAD_PROGRESS 脚本 import requestsp1 a|O:4:"Game":1:{s:3:"log…