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万+

从零实现地震波场模拟:交错网格有限差分法核心代码精讲

本文详细介绍了从零实现地震波场模拟的核心技术,重点讲解了交错网格有限差分法的实现过程。通过速度-应力弹性波方程的离散化处理,结合代码实例演示了应力与速度更新的关键步骤,并分享了震源加载、稳定性条件等实用技巧,为计算地球物理学研究提供实践指导。

weixin_42556197的博客 410

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

新版MQL语言程序设计:用vscode编写编译调试mt4和mt5程序

使用VScode搭建MT4与MT5开发环境,实现编辑编译调试统一。

超哥量化的博客 6872

Rust练手:从零手撸RISC-V架构虚拟机(一)(附完整代码)

使用Rust实现一个简单的RISC-V架构的CPU雏形,支持add,sub,addi三个指令。

qq_45983373的博客 2570

Java面试基础篇-JVM

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

ByteX的博客 281

实战避坑:示波器测量非隔离开关电源的炸机风险与隔离方案

本文详细分析了使用示波器测量非隔离开关电源时的炸机风险,揭示了地线环路导致的短路问题,并对比了四种防炸机解决方案,包括示波器隔离供电、拔掉电源地线、使用差分探头和被测板隔离供电。重点推荐使用隔离变压器方案,确保测量安全与精度,同时提供了实操建议与经验分享,帮助工程师避免常见测量事故。

weixin_29224309的博客 556

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

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

myStyle的博客 2560

基于Simulink/Matlab的VSG并网系统单相接地与相间短路故障仿真建模与特性分析

本文详细介绍了基于Simulink/Matlab搭建虚拟同步发电机(VSG)并网系统仿真模型的方法,并重点分析了单相接地与相间短路故障下的系统特性。通过设置三相故障模块参数,模拟了故障发生时的电压、电流变化及VSG动态响应,为理解故障机理、优化控制策略及设计继电保护提供了仿真依据与实践指导。

t8u9v0w1x的博客 514

WorkBuddy入门到 多Agent团队协作完全指南(附实操代码与配图)

WorkBuddy的Agent Teams功能支持多智能体协作,通过创建AI团队提升复杂任务处理效率。该功能支持自然语言创建团队、任务分配与依赖管理、成员间消息通信(包括直接消息和广播),并提供任务审批机制。典型应用场景包括软件开发、内容创作等协作任务。环境要求WorkBuddy 2026年3月及以上版本,支持Windows和macOS系统。用户可快速创建包含不同角色的AI团队,通过共享任务列表和信箱系统实现协作。高级功能包括委派模式、任务依赖管理和成员自主认领等,适合各类协作场景。

三棱球的专栏 6447

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

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

陈哈哈的菜园子 8091

双Orin PCIe RC&EP模式互通

orin pcie 互通

乐于分享 3877

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

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

chenxuefeng_accp的专栏 753

ABAP CDS View 从入门到精通教程第一篇:ABAP CDS View 在 SAP 技术体系中的重要地位

摘要:本文介绍了SAP开发技术专家提供的多套SAP开发教程,涵盖ABAP、UI5、Fiori、OData、BTP等技术领域。重点阐述了ABAP CDS View在SAP S/4HANA中的核心地位,作为虚拟数据模型(VDM)的关键技术,它实现了OLTP和OLAP的统一处理。文章还说明了学习CDS View的前置条件,包括需要SAP NetWeaver 7.50 SP01或更高版本系统,以及使用SAP ABAP Development Tool进行开发实践。作者具有16年SAP开发经验,这些教程形成了完整的S

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 897

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

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

【JVM17】垃圾回收器

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

weixin_45913226的博客 2565

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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、付费专栏及课程。

余额充值