JVM的GC垃圾回收面试小结

JVM调优面试题——垃圾回收专题 1、如何确定一个对象是垃圾?1.1、引用计数法1.2、可达性分析2、对象被判定为不可达对象之后就“死”了吗?3、都有哪些垃圾收集算法?3.1、标记-清除(Mark-Sweep)3.2、标记-复制(Mark-Copying)3.3、标记-整理(Mark-Compact)3.4、分代收集算法3.5、三色标记4、什么是STW(stoptheworld)?5、你知道哪些垃圾收集器?5.1、Serial5.2、SerialOld5.3、ParNew5.4、ParallelScavenge5.5、ParallelOld 阅读详情

1、JVM的组件有什么?
答:jvm主要包含5个核心结构:虚拟机栈,本地方法栈,堆,方法区,程序计数器。

2、JVM中哪些结构是线程共享的,哪些是线程私有的?
答:线程共享的有堆(保存新建的实例),方法区(主要保存存一些静态常量,基本类型变量)。
线程私有的是虚拟机栈,本地方法栈还有线程计数器。

3、JVM中的虚拟机栈帧中保存了什么?
答:虚拟机栈帧中保存了局部变量表,动态链接,操作数栈,方法返回地址

4、gvm做垃圾回收的时候什么时候触发full gc什么时候触发senior gc?
答:说触发fullgc和senior gc前首先得明确两个概念:(1)什么是gc垃圾回收,gc垃圾回收主要发生在jvm的堆中,堆又被分为新生代,老年代,元空间(持久带),新生代里又被划分为3个区域,eden区,from区和to区,(2)什么被对象被gc认为是垃圾,有两种方法确认可达性分析法和引用计数器,当通过可达性分析法找到的对象不认为是垃圾,找不到引用的被认为是垃圾,引用计数器是当引用次数为0时被认为是垃圾。
明确以上两个概念后再谈谈什么时候触发full gc 什么时候触发senior gc。新建的实例首先出现在edan区当无法在eden区创建新的实例时,eden区和form区会经过可达性算法分析后将不活跃的实例对象回收,释放空间,这就是触发了一次senior gc(值得一提的是在此处采用的是复制回收的垃圾回收算法,统一将eden区和from区的活跃对象复制到to区,然后回收不活跃对象)。那么什么时候触发full gc呢?这个分为比较多的情况

  1. 当调用System.gc()时,系统会要求触发full gc,但是不一定执行
  2. 当老年代没有空间了,则会触发一次full gc。
  3. 当从新生代经过8次(默认)senior gc存活下来的对象向老年代移动时,老年代空间不足以接收新生代对象时,触发full gc。
  4. 方法区空间不足
  5. 当新生代想老年代转移空间大小平均大于老年代剩余空间时触发full gc。

5、当内存中变量A引用了变量B,JVM是如何释放内存呢?
答:这里涉及两个内存回收的算法,一个是引用计数法,另一个是可达分析法。引用计数法对于这种情况是处理不了的,得用可达性分析法:通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为“引用链”,当一个对象到 GC Roots 没有任何的引用链相连时(从 GC Roots 到这个对象不可达)时,证明此对象不可用。这里可达性分析法可以解决这种循环引用的情况。

6、内存溢出与内存泄漏的区别是什么?
答:1、内存溢出是指你要求分配的内存吗,系统给不了你了。空间不足。
2、内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

jvm性能调优 - 22JVM GC回顾 前面二十几篇分析了JVM的核心运行原理,还有JVM GC的工作原理 同时,结合案例分析了JVM什么情况下会出现GC的问题,平时我们说优化JVM,到底是在说优化JVM的什么东西 。 这里我们来总结一下 阅读详情

相关推荐

面试官:说一下你们线上JVM是如何优化的?一不小心聊了2个小时!!

面试官:说一下你们线上JVM是如何优化的?一不小心聊了2个小时!! 说一JVM的内存模型是什么样子的?什么时候对象可以被收回?常见的垃圾回收器算法有哪些,各有什么优劣?什么时候对象会进入老年代?什么是空间分配担保策略?如何优化减少Full GC? 面对这一大波JVM面试题,你真的Hold住吗? 这里把重要的知识点都写出来了,不管是核心知识点也好还是面试题也好,让大家对知识框架有个基本轮廓 同时也整理了283页的PDF文档,也是Java的核心知识点。 需要的朋友可以,点击这里领取!!!,暗号是:优快云 .

a3961401的博客 2万+

Java面试题:GC垃圾回收机制

在程序运行中会不断地创建对象,这些对象数据会占用系统内存,如果得不到有效的管理和释放会导致内存的占用越来越多,这个时候就要用到GC垃圾回收机制。

霁晨晨晨的博客 3万+

Unity URP炫彩干涉效果:从薄膜干涉原理到Shader Graph实现

薄膜干涉是一种常见的光学现象,指光在透明薄膜上下表面反射后产生干涉,形成彩虹色条纹。其原理基于光程差导致的相长与相消干涉,不同波长的光被选择性增强或削弱。在计算机图形学中,这一物理现象被抽象为高效的数学模型,通过Shader编程实现动态色彩变化,为游戏和实时渲染带来独特的视觉表现力。技术实现上,常采用正弦函数结合噪声纹理来模拟色彩循环,利用法线与视角点积作为基础变量,加入噪声扰动模拟厚度不均,实现随视角变化的虹彩效果。在Unity URP渲染管线中,可通过Shader Graph可视化工具或手写HLSL代码

weixin_34026997的博客 294

java笔试面试问题

1,java基本数据类型已经拆装箱: java基本数据类型:int(4),float(4),short(2),long(8),double(8),char(2),boolean(1),byte(1) 包装类型:Integer,Float,Short,Long,Double,Char,Boolean,Byte 基本数据类型与包装类型之间的转化为拆装箱 基本数据类型在传递参数时是按照值传递,其...

baiyongliang 214

pycharm添加Anaconda解释器显示不出来

因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。

2202_75803271的博客 4006

Plant simulation、Flexsim、Automod、Emulate3D、VisuaComponent仿真软件对比

E3D在行业内以展示效果好,入门阶段易学易用人机界面友好,电控仿真连接方便不需要借助其他第三方软件,E3D平台开放度较高用户DIY程度强,数据分析功能针对要评定对象的KPI的可根据项目或者使用者需求进行评定。3.支持导入导出多种格式的文件,比如dwg、dxf、fbx、obj、3ds、step、stp、iges、skp、stl、wrl、 bmp 等等。3.软件自带模型组件库程序代码开放,用户可以引用、修改、拷贝,按照自己的逻辑修改模型,或者创建模型并保存到组件库与别人共享。3. 支持导出布局图片。

qq_43342303的博客 3580

Java面试基础篇-JVM

Java 内存区域 Java虚拟机主要包含几个区域: 堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S13个部分,他们默认的比例是8:1:1的大小。 栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧的结构又包含局部变量表、操作数栈、动态连接、方法返回地址。 1.局部变量表用于存储方法参数和局部变量。当

ByteX的博客 281

【Claude Code的Harness Engineering实现】:06-记忆系统(Memory)

记忆系统是Claude Code实现跨会话持久化和上下文保持的核心组件。它分为短期记忆(当前会话的对话历史)和长期记忆(跨会话保留的结构化信息),通过多层级的文件系统实现灵活的记忆管理。

rengang66的博客 240

垃圾回收机制--GC 垃圾收集器--JVM调优-面试题

这个默认值是根据实践经验和性能测试得出的,可以尽可能的的保证垃圾回收效率的前提下减少移动到老年代的对象数量;从而减少Full gc最小是1,不可以设置为负数或0最大值是15,原因是对象的GC年龄存储在对象头里,分配4bit存储,转换为二进制就是15.G1是JDK8 开始有在JDK9作为默认垃圾回收器。在多处理器和大容量内存环境中。能充分利用资源,尽量缩短STW。采用标记-整理算法不会产生内存碎片(局部是通过复制算法)把内存划分为多个独立分区Region可预测的停顿时间模型。

myStyle的博客 2560

海康Visionmaster-通讯管理:ModBus 通信发送非整型 数据的方法

海康Visionmaster-通讯管理:ModBus 通信发送非整型 数据的方法

视觉人机器视觉的博客 1741

OceanBase数据库:从入门到精通全栈教程目录(含架构解析、性能调优与实战案例)

《OceanBase数据库专栏》全面解析蚂蚁集团自主研发的分布式关系型数据库,涵盖从基础到高级的完整知识体系。专栏分为入门篇、原理篇、使用篇等七大模块,包含35+篇深度文章,详细讲解OceanBase的高可用架构、Paxos协议、LSM树存储引擎等核心技术。特别提供MySQL/Oracle迁移指南、金融/电商场景实践案例,以及性能调优、运维监控等实战内容。适合开发者、DBA及架构师快速掌握OceanBase的核心特性和行业应用,助力企业实现数据库分布式转型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 981

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day35】—— JVM2

百日闭关修炼,每日三道高频面试题。一起冲进大厂!JVM2,后面会分三篇来梳理垃圾回收机制,快上车!

陈哈哈的菜园子 8091

2026年摩尔线程数字IC面试试卷带答案

本文摘要: 该试卷为数字IC设计笔试,满分120分,时长90分钟,包含单选题、波形分析题、多选题和代码设计题。重点考察时序约束(如set_false_path)、建立/保持时间、逻辑化简、复位机制、AXI协议、半导体工艺、状态机、GPU架构等核心知识点。多选题涉及异步FIFO设计、Verilog综合、亚稳态处理、C++关键字和低功耗技术。代码题要求实现单比特信号去毛刺电路,需稳定4个时钟周期才输出。试题解析详细,标注了企业面试高频考点,如摩尔线程自研的MUSA架构和花港GPU架构特点。整体内容专业性强,覆盖

Open 98

JVM 垃圾回收器结构化面试答题

JVM垃圾回收实战摘要 线上核心服务选用G1GC,因其停顿可控(支付系统优化后停顿从400ms降至60ms),而CMS因碎片和并发失败问题被逐步淘汰(如订单系统曾受此困扰)。老年代回收器包含SerialOld(标记-整理)、ParallelOld(吞吐优先)、CMS(标记-清除,已弃用)及新一代ZGC(超低延迟)。G1采用分区复制算法,优于CMS的标记-清除,支持自动整理和预测停顿。调优时开启GC日志,结合jstat/GCViewer分析,关键参数如G1的MaxGCPauseMillis。

chenxuefeng_accp的专栏 753

华为OD机试真题 新系统 2026-08-16 Python&JS【智能家居模式调度优化】

智能家居系统中有多个自动化联动模式,每个模式 modes[i]=[start_time,end_time,power],表示它在左闭右开区间 [start_time,end_time) 内持续消耗固定功率 power。

MISAYAONE的博客 85

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【JVM17】垃圾回收器

讲解了7个经典垃圾回收器与未来发展的一些回收器

weixin_45913226的博客 2565

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入理解 JVM 的垃圾回收机制

本篇内容我们从头到尾讲了一遍 JVM 的垃圾回收机制,包括垃圾回收的概念、垃圾判断算法、垃圾收集算法、Stop The World、新生代和老年代等等。 记得以前有这样一副动图,用来嘲笑 JVM 的垃圾回收机制,大致的意思就是,JVM 的垃圾回收机制很工业化,但是好像是在做无用功,垃圾回收不彻底。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1585

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JVM-垃圾回收GC

文章目录一、垃圾回收概述1. 什么是垃圾?2. 为什么需要GC3. 早起的垃圾回收4. Java垃圾回收机制二、垃圾回收相关算法1. 垃圾标记阶段: 引用计数算法2. 标记阶段: 可达分析算法2.1 GC Roots3. 对象的finalization机制3.1 具体过程4. MAT与JProfiler的GC Roots溯源4.1 MAT4.2 JProfiler5. 清除阶段:标记-清除算法(mark-Sweep)6. 清除阶段:复制算法7. 清除阶段:标价-压缩算法8. 小结9. 分代收集算法10. 增

L1ak的博客 1615

【从零开始学JVM】第四章_垃圾回收

本章介绍了JVM的垃圾回收机制、垃圾相关算法(标记-清除、标记-压缩、复制、分代收集)、7种垃圾回收器(Serial、Serial Old、ParNew、Parallel Scaveng、Parllel Old、CMS、G1)的特点、应用场景、使用算法、以及一些常见的面试题

踢桃的成长之路 1644

GC垃圾回收机制,垃圾回收算法,垃圾回收器

Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底层原理,图文并茂,突破学习及面试瓶颈。 楔子-JVM内存结构补充 在上篇《JVM之内存结构详解》中有些内容我们没有讲,本篇结合垃圾回收机制来一起学习。还记得JVM中堆的结构图吗? 图中展示了堆中三个区域:Eden、From Survivor、To Survivor。从图中可以也可以看到它们的大小比例,准确来说是:8:1:1。为什么要这样设计呢,本篇文章后续会给出解答,还是根据垃圾回收的具体情况来设计的。

weixin_43921491的博客 705

JVM_12 垃圾回收3-垃圾回收器

1. GC的分类与性能指标 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 1.1 按线程数分,可以分为串行垃圾回收器和并行垃圾回收器 串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束。 ➢在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场 合,串行回收器

2036

JVM的垃圾回收算法有哪些?从可达性分析算法开始,深入解读三大核心垃圾回收算法

本文首先介绍GC Roots、可达性分析算法、非可达对象回收过程等基本概念,然后深入讲解标记清除算法、标记复制算法、标记整理算法等核心算法,并做以简单的对比,引申分代收集理论。

种一棵树最好的时间是十年前,其次是现在 2465

JVM虚拟机内存模型和GC垃圾回收机制小结

JVM内存模型是什么?可能百度的时候有一堆答案,但是死记硬背过一阵就忘了,无法真正的渗透自己的大脑,特别是像我一样非科班出身的,对于计算机还比较笼统,没有一个特定的概念,那么我这篇博客,就是通过自主学习,然后通过自己的理解,然后去理解JVM虚拟机,和内存模型等一些列概念,虽然可能对于一些人来讲说的比较浅显,但是也算自身的一种进步吧,由浅入深,逐渐的去理解就好了,嘿嘿。。。。 首先我们看一张图: ...

wuhongji2017的博客 477

垃圾回收器

在HotSpot虚拟机中,使用 -XX:+UseSerialGC 参数可以指定年轻代和老年代都使用串行收集器。– 等价于 新生代用Serial GC,且老年代用Serial Old GC### 小结在程序中,开发人员可以通过选项"-XX:+UseParNewGC"手动指定使用ParNew收集器执行内存回收任务。它表示年轻代使用并行收集器,不影响老年代。-XX:ParallelGCThreads 限制线程数量,默认开启和CPU数据相同的线程数。

weixin_43811057的博客 696

12.JVM-垃圾回收相关算法

对象存活判断、引用计数算法、可达性分析算法、对象的finalization机制、MAT与JProfiler的GC Roots溯源、垃圾清除阶段、标记-清除算法、复制算法、标记-压缩/整理算法、标记-压缩和标记-清除的区别、分代收集算法、增量收集算法、分区算法

Android系统优化 3489

Java的垃圾回收机制详解

C语言垃圾回收Java语言垃圾回收。

qq_41946216的博客 4456
上一篇: 初探单例模式
下一篇: IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)
李政达123
博客等级 码龄11年 6粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值