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


目录

  • 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.mfbz.cn/a/595768.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【stm32笔记】DSP库调用

参考:DSP库调用 , __CC_ARM,__TARGET_FPU_VFP, __FPU_PRESENT1U, ARM_MATH_CM4把需要的库复制出来单独用,方便移植

websevere服务器从零搭建到上线(三)|IO多路复用小总结和服务器的基础框架

文章目录 epollselect和poll的优缺点epoll的原理以及优势epoll 好的网络服务器设计Reactor模型图解Reactor muduo库的Multiple Reactors模型 epoll select和poll的优缺点 1、单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数…

什么是X电容和Y电容?

先补充个知识: 一、什么是差模信号和共模信号 差模信号:大小相等,方向相反的交流信号;双端输入时,两个信号的相位相差180度 共模信号:大小相等。方向相同。双端输入时,两个信号相同。 二、安规…

小程序如何重启

用户在使用小程序的过程中,有时候会碰到一些问题。比如小程序数据不加载、卡顿、崩溃或者出现其他异常情况。这时候,最简单的办法就是重启小程序。但是很多客户不知道如何重启小程序,下面就具体介绍小程序重新启动的几种方法。 1. 强制关闭&…

CWDM、DWDM、MWDM、LWDM:快速了解光波复用技术

在现代光纤通信领域,波分复用(WDM)技术作为一项先进的创新脱颖而出。它通过将多个不同波长和速率的光信号汇聚到一根光纤中来有效地传输数据。本文将深入探讨几种关键的 WDM 技术(CWDM、DWDM、MWDM 和 LWDM)&#xff0…

流量分析。

流量分析 在Wireshak抓包可以看到正常的执行流程如下: ● Client向Server发起Load data local infile请求 ● Server返回需要读取的文件路径 ● Client读取文件内容并发送给Server ● PS:在本机上启动服务端与客户端,启动wireshark 抓包&…

根据相同的key 取出数组中最后一个值

数组中有很多对象 , 需根据当前页面的值current 和 数组中的key对比 拿到返回值 数据结构如下 之前写法 const clickedItem routeList.find(item > item.key current) // current是当前页 用reduce遍历数组返回最后一个值 const clickedItem routeList.reduce((lastIte…

41.乐理基础-拍号-小节、小节线、终止线

小节线:下图红框中的竖线就是小节线 小节、终止线:最后的终止线就是文字意思表示乐谱结束了,后面没有了 下图中 0.5表示0.5拍(八分音符)、1表示1拍(四分音符)、0.25表示0.25拍(十六分…

学习Rust的第29天: cat in Rust

今天即将是这个系列的最后一次内容,我们正在catRust 中从 GNU 核心实用程序进行重建。cat用于将文件内容打印到STDOUT.听起来很容易构建,所以让我们开始吧。 GitHub 存储库:GitHub - shafinmurani/gnu-core-utils-rust 伪代码 function read(…

Transformer详解:从放弃到入门(一)

Transformer由论文《Attention is All You Need》提出,是一种用于自然语言处理(NLP)和其他序列到序列(sequence-to-sequence)任务的深度学习模型架构,在自然语言处理领域获得了巨大的成功,在这个…

免费开源线上线下交友社交圈子系统 小程序+APP+H5 可支持二开!

为什么要玩社交软件:互联网社交软件的独特优势 首先,社交软件为我们提供了一个便捷的沟通方式。在传统的交往方式中,人们需要面对面交流,这种方式在时间和空间上都受到限制。而社交软件打破了这些限制,无论我们身处何地…

如何复制本地docker镜像到其他主机

(1)打包镜像 比如我要复制的镜像是grafana的镜像 docker images 这里我把打包的镜像放在了根~目录下,如截图所示: docker save grafana/grafana:latest -o ~/grafana.jar (2)移动镜像 scp命令拷贝镜像到目标…

linux学习:线程池

目录 原理 初始线程池 运行中的线程池 相关结构体 api 线程池初始化 投送任务 增加活跃线程 删除活跃线程 销毁线程池 例子 thread_pool.h thread_pool.c test.c 测试程序 原理 一个进程中的线程就好比是一家公司里的员工,员工的数目应该根据公司的…

AI神助攻!小白也能制作自动重命名工具~

我们平时从网上下载一些文件,文件名很多都是一大串字母和数字,不打开看看,根本不知道里面是什么内容。 我想能不能做个工具,把我们一个文件夹下面的所有word、excel、ppt、pdf文件重命名为文件内容的第一行。 我们有些朋友可能不会…

刷代码随想录有感(57):二叉搜索树中的众数

题干&#xff1a; 代码&#xff1a; class Solution { public:unordered_map<int,int>map;void traversal(TreeNode* root){if(root NULL)return;traversal(root->left);map[root->val];traversal(root->right);}bool static cmp(const pair<int,int>&a…

[蓝桥杯2024]-PWN:ezheap解析(堆glibc2.31,glibc2.31下的double free)

查看保护 查看ida 大致就是只能创建0x60大小的堆块&#xff0c;并且uaf只能利用一次 完整exp&#xff1a; from pwn import* #context(log_leveldebug) pprocess(./ezheap2.31)def alloc(content):p.sendlineafter(b4.exit,b1)p.send(content) def free(index):p.sendlineaft…

C++:运算符重载(=/==)

赋值运算符&#xff08;&#xff09;重载 在C中&#xff0c;赋值运算符可以被重载&#xff0c;允许用户定义类对象的赋值行为。通过重载赋值运算符&#xff0c;可以自定义对象的赋值操作&#xff0c;以便适应特定的需求和语义。当我们定义一个自定义的类时&#xff0c;比如一个…

语音识别---节拍器

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

商城数据库88张表结构完整示意图41~50(十二)

四十一&#xff1a; 四十二&#xff1a; 四十三&#xff1a; 四十四&#xff1a; 四十五&#xff1a; 四十六&#xff1a; 四十七&#xff1a; 四十八&#xff1a; 四十九&#xff1a; 五十&#xff1a;

说说你对盒子模型的理解?

一、是什么 当对一个文档进行布局&#xff08;layout&#xff09;的时候&#xff0c;浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型&#xff08;CSS basic box model&#xff09;&#xff0c;将所有元素表示为一个个矩形的盒子&#xff08;box&#xff09; 一个盒子由四…
最新文章