JVM面试真题总结(六)
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/

解释GC的标记-整理算法及其优点
GC(垃圾收集)的标记整理算法是一种用于回收垃圾对象并释放内存空间的方法。
这个算法主要包含两个阶段:标记阶段和整理阶段。
标记阶段:
- 在这个阶段,垃圾收集器会遍历所有的对象,对于还在使用的对象进行标记。
- 在使用的定义可以是直接在使用,也可以是被其他在使用的对象引用。
整理阶段:
- 在标记阶段之后,垃圾收集器会进行整理,移动所有被标记为在使用的对象,使他们在内存中连续分布。
- 然后,它就可以一次性地回收所有未被标记的对象,也就是垃圾对象,从而释放大片连续的内存空间。
标记整理算法的一个主要优点是它可以有效地处理内存碎片问题
- 因为它会把所有在使用的对象整理到一起,释放出大片连续的内存空间。
不过,它的代价是需要移动对象,这会增加一定的开销。
在实际的应用场景中,标记-整理算法通常用于堆内存的垃圾回收
- 特别是处理老年代(
Old Generation)的垃圾回收。
解释GC的标记-清除算法及其缺点
标记-清除(
Mark-Sweep)是最早的垃圾收集算法之一其过程主要分为两个阶段:标记阶段和清除阶段。
标记阶段
- 这一阶段的任务是遍历所有的可达对象。
- 从一个固定的根对象(
root)开始,递归地访问对象图。- 在访问到每一个可达对象时,都将其标记为可达。
- 在Java中,根对象通常包括全局变量和当前执行方法的局部变量。
清除阶段:
- 在标记阶段完成后,清除阶段开始。
- 在这个阶段,垃圾收集器会遍历堆内存,把未被标记(也就是不可达)的对象进行清除,回收其占用的内存。
标记-清除算法的优点是实现简单,且不需要移动存活对象。
但是,它有两个显著的缺点:
效率问题:
- 标记和清除两个过程的效率都不高。
空间问题:
- 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配大对象时
- 无法找到足够的连续内存,从而提前触发另一次垃圾收集动作。
因此,现代的垃圾收集器通常不单独使用标记-清除算法,而是结合其他算法一起使用
- 如标记-整理算法或分代收集算法,以解决其带来的效率和空间问题。
解释GC的复制算法及其适用场景
复制算法是垃圾收集中的一种常见算法,它主要被用于新生代的垃圾回收。
- 复制算法的基本思想是将内存分为两个相等的区域(或者不等也可以,如新生代中的Eden和Survivor区)
- 每次只使用其中一个区域。
- 当这个区域用完时,就把还活着的对象复制到另一个区域,然后再把已使用过的区域清空。
具体来说,例如在Java的新生代中,内存被分为一个Eden区和两个
Survivor区(分别记为S0和S1)。大部分情况下,新创建的对象会被分配在Eden区。
当Eden区满时,就会触发一次Minor GC,GC会检查Eden区中的所有对象
- 把还活着的对象复制到一个
Survivor区(如S0),然后把Eden区完全清空。- 在下一次Minor GC时,会再次检查Eden区和S0区
- 把还活着的对象复制到另一个
Survivor区(如S1),然后清空Eden区和S0区,以此类推。复制算法的主要优点是:
- 它可以快速地回收垃圾对象,因为只需要清空已使用过的区域就可以了
- 而且,由于活着的对象会被复制到另一个区域,因此这个过程也自然地完成了内存的整理,避免了内存碎片的产生。
然而,复制算法也有一些缺点:
- 首先,它需要两个区域来进行复制,这意味着在任何时候
- 都有一半的内存空间是闲置的,这在内存紧张的情况下可能是一种浪费
- 其次,如果有大量对象需要复制,那么复制过程可能会消耗一定的时间和CPU资源。
不过,对于新生代这样对象存活率较低的区域,复制算法通常是一种非常高效的垃圾收集方式。
解释GC的可达性分析算法及其优势
GC可达性分析算法是垃圾收集器用来判断哪些对象:
- 是活的(即仍然可能被程序使用)和哪些对象是死的(即不再被程序使用)的一种算法。
这个算法的基本思想是通过一系列的称为
GC Roots的对象作为起始点从这些节点开始向下搜索,搜索所走过的路径称为引用链(
Reference Chain)。
- 当一个对象到
GC Roots没有任何引用链相连时,则证明此对象是不可用的。在Java语言中,可作为
GC Roots的对象包括以下几种:
虚拟机栈(栈帧中的本地变量表)中引用的对象:
- 比如方法中创建的对象引用。
方法区中类静态属性引用的对象:
- 比如类中的静态变量。
方法区中常量引用的对象:
- 比如字符串常量池中的引用。
本地方法栈中JNI(即一般说的Native方法)引用的对象。
通过这种方式,GC可达性分析算法可以找出所有被程序还可能会使用的对象。
- 在标记阶段完成后,未被标记的对象将被视为不可达,之后在清除阶段被回收。
相关文章:
JVM面试真题总结(六)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 解释GC的标记-整理算法及其优点 GC(垃圾收集ÿ…...
C语言代码练习(第十八天)
今日练习: 48、猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时&…...
linux上使用rpm的方式安装mysql
1.从mysql官网上下载需要的版本,根据操作系统版本,CPU架构,下载让rpm bundle,这个版本是个完整版,包含其他所有版本 上传到服务器的一个目录,进行解压 执行tar -xvf mysql*.tar tar -xvf mysql*.tar 2.卸载老版本m…...
html 中如何使用 uniapp 的部分方法
示例代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><…...
Samtec连接器小课堂 | 连接器电镀常识QA
【摘要/前言】 像大多数电子元件一样,无数子元件和工艺的质量直接影响到成品的质量和性能。对于PCB级连接器,这些因素包括针脚材料、塑料类型、模制塑料体的质量、尾部的共面性、表面处理(电镀)的质量、选择正确的连接器电镀、制…...
大模型备案全网最详细流程解读(附附件+重点解读)
文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报…...
基于2143规则编码的uint8_t如何转换成float
2143格式存储的float类型数据在解码时,需要将1和2互换,3和4互换,然后 通过数组转float,进行转换 uint8_t data[] {0x72, 0x02, 0xc8, 0x42}; // 字节数组 float bytesToFloat(uint8_t data[]) { uint32_t x; memcpy(&x, da…...
[项目][WebServer][整体框架设计]详细讲解
目录 0.框架 && 前言1.TcpServer类1.功能2.类设计 2.HttpServer类1.功能2.类设计 3.Request类 && Response类1.功能2.Request类设计3.Response类设计 4.EndPoint类1.功能2.类设计 5.Task类1.功能2.类设计 6.ThreadPool类1.功能2.类设计 0.框架 && 前言…...
SprinBoot+Vue网上购物商城的设计与实现
目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…...
【数据结构】2——二叉树遍历
数据结构2——二叉树遍历 单纯记录 文章目录 数据结构2——二叉树遍历一、二叉树遍历1,先序遍历:根左右递归实现非递归实现(栈) 2.中序遍历:左根右递归非递归 3 .后序遍历:左右根递归非递归(两…...
数据结构应用实例(五)——关键路径
Content: 一、问题描述二、算法思想三、代码实现四、小结 一、问题描述 设计实现 AOE 网的关键活动与关键路径问题; 二、算法思想 获取拓扑序列;计算节点的最早开始时间 v e [ i ] ve[i] ve[i];计算节点的最晚开始时间 v l [ j ] vl[j] v…...
组播 2024 9 11
PIM(Protocol Independent Multicast)是一种常用的组播路由协议,其独立于底层的单播路由协议,能够在多种网络环境中有效地实现多播路由功能。PIM主要有两种模式:PIM Sparse Mode (PIM-SM) 和 PIM Dense Mode (PIM-DM)&…...
揭秘开发者的效率倍增器:编程工具的选择与应用
文章目录 每日一句正能量前言工具介绍功能特点:使用场景:提高工作效率的方式: 效率对比未来趋势后记 每日一句正能量 这推开心窗之人,可以是亲朋好友,也可以是陌客路人,可以是德高望重的哲人名流࿰…...
在AI的时代,程序员如何才不被淘汰
随着人工智能技术的迅猛发展,大模型(Large Language Models, LLMs)正逐渐成为IT行业的热点。对于程序员来说,转行大模型领域不仅意味着新的机遇,也面临着诸多挑战。本文将探讨程序员转行大模型的机遇与挑战,…...
tabBar设置底部菜单选项以及iconfont图标,setTabBar设置TabBar和下拉刷新API
tabBartabBar属性:设置底部 tab 的表现 首先在pages.json页面写一个tabBar对象,里面放入list对象数组,里面至少要有2个、最多5个 tab, 如果只有一个tab的话,H5(浏览器)依然可以显示底部有一个导航栏,如果没有,需要重启后才有,小程序则报错,只有2个以上才可以…...
2024C题prompt
题目 我正在进行数学建模,需要你为我提供帮助。下面我会将赛题背景和问题发送给你,请你为我提供比赛思路和指导。 以下是赛题背景和赛题说明,不是问题: 农作物的种植策略 根据乡村的实际情况,充分利用有限的耕地资源,…...
Numpy中数组的形状处理
目录 将多维数组降为一维数组竖直方向或水平方向数组的堆叠 数组形状处理的手段主要有reshape,resize,ravel,flatten,vstack,hstack,row_stack,column_stack,下面通过简单 的案例来解释这些方法…...
【动态规划】子序列问题二(数组中不连续的一段)
子序列问题二 1.最长定差子序列2.最长的斐波那契子序列的长度3.最长等差数列4.等差数列划分 II - 子序列 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃&am…...
可视耳勺方便吗?可视耳勺热销第一名品牌!
在生活中,耳部清洁是我们常常会关注却又容易忽视细节的一项日常护理。传统挖耳勺有着不可视的局限性,只能凭感觉和经验反复刮蹭耳朵,很容易将耳垢越捅越深,而且还会刮伤耳道。因此,可视耳勺应运而生,它通过…...
micropython 3-wire spi 9bit 写入的问题
网上猛找把,没有,找不到,mpy不愧是没朋友的缩写,没有咋办,自己造! 此库特别适用那些rgb屏的初始化,大多用3线spi,好家伙rgb用了十多个引脚现在想起来省引脚了是吧,就差这…...
Untrunc:10倍速视频修复工具,让损坏的MP4/MOV文件起死回生
Untrunc:10倍速视频修复工具,让损坏的MP4/MOV文件起死回生 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经因为视频文件损坏而失去…...
Taskbar-Lyrics:Windows 11任务栏歌词嵌入终极指南
Taskbar-Lyrics:Windows 11任务栏歌词嵌入终极指南 【免费下载链接】Taskbar-Lyrics BetterNCM插件,在任务栏上嵌入歌词,目前仅建议Windows 11 项目地址: https://gitcode.com/gh_mirrors/ta/Taskbar-Lyrics 在Windows 11上享受沉浸式…...
JeecgBoot低代码开发平台终极实战指南:从零开始构建企业级应用
JeecgBoot低代码开发平台终极实战指南:从零开始构建企业级应用 【免费下载链接】jeecg-boot jeecgboot/jeecg-boot 是一个基于 Spring Boot 的 Java 框架,用于快速开发企业级应用。适合在 Java 应用开发中使用,提高开发效率和代码质量。特点是…...
别再纠结了!用SpringBoot实战告诉你,图片上传选FastDFS还是MinIO(附完整代码)
SpringBoot实战:FastDFS与MinIO文件存储方案深度对比与选型指南 在当今数据驱动的互联网应用中,文件存储系统如同数字世界的基础设施,支撑着从用户头像到高清视频的各种数据存取需求。作为Java开发者,当我们面对"选择困难症&…...
Win11Debloat终极指南:5分钟让你的Windows系统焕然一新
Win11Debloat终极指南:5分钟让你的Windows系统焕然一新 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简化和…...
快速体验Qwen3-0.6B-FP8:无需下载模型,开箱即用的AI文本生成服务
快速体验Qwen3-0.6B-FP8:无需下载模型,开箱即用的AI文本生成服务 1. 为什么选择Qwen3-0.6B-FP8? Qwen3-0.6B-FP8是Qwen系列最新推出的轻量级语言模型,采用FP8量化技术大幅降低了显存需求。相比传统模型,它具有以下突…...
最大数(信息学奥赛一本通- P1549)(洛谷-P1198)
【题目描述】原题来自:JSOI 2008给定一个正整数数列 a1,a2,a3,⋯,an ,每一个数都在 0∼p–1 之间。可以对这列数进行两种操作:添加操作:向序列后添加一个数,序列长度变成 n1;询问操作:询问这个序…...
绿色低碳+高效交付:中集模块化数据中心用实力印证中国方案全球竞争力
随着人工智能与绿色转型成为全球经济增长核心引擎,高算力需求正推动数据中心建设向预制化、高效能方向加速演进。中集集团(000039.SZ/2039.HK)凭借工业化制造与全球交付优势,2025年在模块化数据中心(AIDC)领…...
FModel:虚幻引擎资源解析的技术突破与实践指南
FModel:虚幻引擎资源解析的技术突破与实践指南 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 在游戏开发与逆向工程领域,资源解析工具的选择直接影响工作效率与成果质量。当面对…...
LFM2.5-1.2B-Thinking-GGUF开源可部署:自主可控轻量模型替代方案深度评测
LFM2.5-1.2B-Thinking-GGUF开源可部署:自主可控轻量模型替代方案深度评测 1. 模型概述 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式存储,配合llama.cpp运行时,能…...
