大厂面试题-JVM中的三色标记法是什么?
目录
问题分析
问题答案
问题分析
三色标记法是Java虚拟机(JVM)中垃圾回收算法的一种,主要用来标记内存中存活和需要回收的对象。
它的好处是,可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的,JVM中的「CMS、G1垃圾回收器」都用到了三色标记法。
下面来看一下这个问题的解答。
问题答案
在三色标记法中,Java虚拟机将内存中的对象分为三个颜色:
1. 白色:表示还没有被垃圾回收器扫描的对象;
2. 黑色:表示已经被垃圾回收器扫描过,且对象及其引用的其他对象都是存活的;
3. 灰色:表示已经被垃圾回收器扫描过,但对象引用的其他对象尚未被扫描。
在GC开始时(如图),先将所有对象都标记为白色,然后从根对象开始遍历内存中的对象,接着把直接引用的对象标记为灰色。
再判断灰色集合中的对象是否存在子引用,不存在咋放入黑色集合,如果存在,就把子引用对象放入到灰色集合。
按照这样一个步骤不断推导,直到灰色集合中所有的对象变黑后,本轮标记完成。最后,还处于白色标记的对象就是不可达对象,可以直接被回收。
相关文章:

大厂面试题-JVM中的三色标记法是什么?
目录 问题分析 问题答案 问题分析 三色标记法是Java虚拟机(JVM)中垃圾回收算法的一种,主要用来标记内存中存活和需要回收的对象。 它的好处是,可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的ÿ…...

Leetcode—121.买卖股票的最佳时机【简单】
2023每日刷题(十一) Leetcode—17.电话号码的字母组合 枚举法题解 参考自灵茶山艾府 枚举法实现代码 int maxProfit(int* prices, int pricesSize){int i;int max 0;int minPrice prices[0];for(i 1; i < pricesSize; i) {int tmp prices[i] -…...

【云原生】portainer管理多个独立docker服务器
目录 一、portainer简介 二、安装Portainer 1.1 内网环境下: 1.1.1 方式1:命令行运行 1.1.2 方式2:通过compose-file来启动 2.1 配置本地主机(node-1) 3.1 配置其他主机(被node-1管理的节点服务器&…...
Command集合
Command集合 mysql相关命令 查看mysql的状态 sudo netstat -tap | grep mysql 启动mysql sudo service mysql start 停止mysql sudo service mysql stop 重启mysql sudo service mysql restart 指定端口号,客户端连接mysql sudo mysql -h127.0.0.1 -uroot -p red…...

【QT开发(17)】2023-QT 5.14.2实现Android开发
1、简介 搭建Qt For Android开发环境需要安装的软件有: JAVA SDK (jdk 有apt install 安装) Android SDK Android NDKQT官网的介绍: Different Qt versions depend on different NDK versions, as listed below: Qt versionNDK…...

JVM相关面试题(每日一练)
1. 什么是垃圾回收机制? 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭&a…...
OpenCV 相机相关函数
一、变换参数矩阵的求解 1. 计算三个二维点对之间的仿射变换矩阵:getAffineTransform() 2. 计算多个二维点对之间的最优放射变换矩阵(误差最小准则):estimateRigidTransform();或者findHomography(); 3. 计算四个二维点对之间的…...

微信小程序之投票管理
前言 对于会议管理模块,必不可少的当然就是我们的投票管理,实现真正意义上的无纸化办公,本期博客为大家介绍会议管理模块,包括发布投票及查看各类投票的状态 所用技术点 MyBatis、SpringMVC、VentUI MyBatis和SpringMVC在博客主…...

23种设计模式【创建型模式】详细介绍之【建造者模式】
建造者模式:构建复杂对象的精妙设计 设计模式的分类和应用场景总结建造者模式:构建复杂对象的精妙设计建造者模式的核心思想建造者模式的参与者Java示例:建造者模式 设计模式的分类和应用场景总结 可以查看专栏设计模式:设计模式 …...

[量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式
MA 均线时最基本的技术指标,也是最简单,最不常用的(通常使用EMA、SMA)。 以下用两种不同的计算方法和两种不同的画图方法进行展示和说明。 MA 均线指标公式 MA (N)(C1 C2 C3 …C N )/N目录 方式一1.SQL 直接查询均值2.使用 pyp…...
c语言 判断两个文件是否相同
使用strcmp比较: #include <stdio.h> #include <string.h>int Compare(const char * file1, const char* file2) {FILE* f1, * f2;int size1, size2;unsigned char buffer1[1024], buffer2[1024];f1 fopen(file1, "rb");f2 fopen(file2, &…...

【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计
本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:合肥工业大学 队伍名称:芯创之家 指导老师:邓红辉、尹勇生 参赛杯赛:Arm杯 参赛人员:王亮 李嘉燊 金京 获奖情…...

Java电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现|电商API接口接入
一:token 简介 Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需要先向服务器端申请一个接口调用的账号,服务器会给出一个appId和一个key, …...

【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述
1.23 运算符概述 运算符,在数学中常见的加减乘除之类的符号,那么在C在编程语言中呢,将使用特定的符号或标记对操作数进行操作以生成结果。用算术运算符将运算对象(也称操作数)连接起来的、符合C 语法规则的式子,称为C 算术表达式运…...

python爬虫分析基于python图书馆书目推荐数据分析与可视化
收藏关注不迷路 文章目录 前言一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、文章目录 前言 随着电子技术的普及和快速发展,线上管理系统被广泛的使用,有很多商业机构都在实现电子信息化管理,图书推荐也不例外,…...
Java零基础入门-关系运算符
前言 Java作为一门广受欢迎的开发语言,其在企业级应用和移动应用开发中有着广泛的应用。如果你是一个Java零基础的初学者,那么你来到了一个正确的地方。在本篇文章中,我们会详细介绍Java中的关系运算符,帮助你快速入门。 摘要 …...

1200*A. Trust Nobody(贪心)
Problem - 1826A - Codeforces 解析: 从大到小枚举说谎人的个数x,然后查看是否有 x个人说谎即可。 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int t,n,a[N]; signed main(){scanf("%lld",&a…...

二维码智慧门牌管理系统升级解决方案:采集项目的建立与运用
文章目录 前言一、采集项目的建立二、采集项目的运用三、采集项目的意义 前言 在二维码智慧门牌管理系统的升级过程中,一个至关重要的环节是采集项目的建立与运用。采集项目是新建采集任务的前提,同时也是整个系统升级的关键步骤。其意义近似于现实中的…...

Azure - 机器学习:创建机器学习所需资源,配置工作区
目录 一、Azure机器学习工作区与计算实例简要介绍工作区计算实例 二、创建工作区1. 登录到 Azure 机器学习工作室2. 选择“创建工作区”3. 提供以下信息来配置新工作区:4. 选择“创建”以创建工作区 三、创建计算实例四、工作室实战4.1 工作室快速导览4.2 从示例笔记…...

电脑监控软件哪些比较好用
电脑监控软件在当今信息化时代越来越受到人们的关注,它们可以用于保护公司的商业机密,防止员工在工作中做一些不恰当的事情,以及在家庭中监控孩子的上网行为等。 本文将介绍一些比较好用的电脑监控软件: 一、域之盾软件 这款软件…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...