2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

大家好,又见面了,我是你们的朋友全栈君。

前言

为什么需要垃圾回收

首先我们来聊聊为什么会需要垃圾回收,假设我们不进行垃圾回收会造成什么后果,我们举一个简单的例子我们住在一个房子里面,我们每天都在里面生活,然后垃圾都丢在房子里面,又不打扫,最后房子都是垃圾 我们是不是就没法住下去了。所以JVM垃圾回收机制也是一样的,当我们创建的对象占据堆空间要满了的的时候我们就对他进行垃圾回收,注意java的垃圾回收是不定时的,c语言的是需要去调用垃圾回收方法刚刚也说到 上面举的例子也说到 假设一个房子都被垃圾堆满了 那么我们没法住人了 那么我们是不是会告诉别人这个房子没法住人了 而java也是如此当我们堆空间满了的时候 此时它就会抛出异常OutOfMemoryError(简称OOM)什么地方需要进行垃圾回收

刚刚我们说了为什么要回收垃圾,和什么是OOM那么我们下面就给大家介绍,我们JVM中什么地方需要进行垃圾回收。

垃圾回收要考虑的点

1)是否会产生垃圾 2)哪些内存需要回收 3)什么时候回收 4)如何对他进行回收

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

程序计数器 jvm中唯一 一个不需要垃圾回收的地方。 栈 本地方法栈 这个地方会因为栈帧存满了导致内存溢出,所以需要垃圾回收 方法区(元空间) 这个地方也需要进行垃圾回收 堆 这个地方是我们垃圾回收最频繁的地方,我们几乎我们所有的对象都存储在堆中,也是我们今天要着重讲的地方

堆GC

堆,可能大家都不陌生,可是好像又距离我们很远,今天它来了

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

从上面的图我们可以看出 ,我们的堆空间被主要被划分为了二块区域 ,新生代 ,老年代 java堆是我们JVM中管理区域最大的一块, java堆是一个线程共享的区域 ,在虚拟机启动时创建 ,几乎所有的对象都在此分配, java虚拟机规范中有过描述,所有的实例对象以及数组都在堆中进行分配内存, 但目前因为JTI编译器的发展,和逃逸分析技术的逐渐完善,在堆中分配对象也不是那么的绝对了。 堆的内存在物理上可以是不连续的,但是在逻辑上是即可。

新生代我们对象的创建到结束,几乎是”朝生夕死“的一个过程差不多90%的对象都在新生代被回收了,所以新生代的gc也是发生最为频繁的一个区域。新生代产生gc我们称为Y-GC每产生一次y-gc我们对象的年龄就加一岁,直到15岁后进入老年代。当然这是正常情况,那么有没有特殊情况勒当然有空间担保当我们创建的对象大于Eden的时候,此时怎么办,此时他会先产生一次Y-GC如果还是无法存储下新创建的对象,那么我们就会通过空间担保策略进入老年代。还有一种情况,对象创建也会直接进入老年代,当我们的Surivivor区满了的时候,此时它不会主动产生gc只会依赖于Eden,但我们的对象又不能被抛弃,所以它也被分配到了老年代当然我们实际开发工作中需要尽量的去避免这种情况的诞生动态年龄什么是动态年龄勒,这是堆中的另一个,担保策略了,它会去判断我们Surivivor的区中,相同年龄的对象大于Surivivor区一半的时候,那么他就会判定此时这些对象已经能够很好的存活了,所以他们就集体被丢到老年代了对象如何分配内存

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

老年代我们老年代存放的都是一些老对象了,大对象,都是存活时间较长的对象这里一般很少产生FGC这里一旦产生FGC那么所产生GC的耗时将会是YGC的10倍时耗,而我们老年代快要存满时进入了一个对象,这时会产生一次FGC如果GC结束后,还是无法存放对象的话此时就会报OOM异常。垃圾回收算法分代算法

分代算法,其实也就是将我们堆空间划分为了一个个不同的区域,新生代,老年代,不让它回收的时候对整个堆进行一个回收。减少GC所停顿的时间,我们称之为STW (Stop The World),假设我们堆整个堆进行垃圾回收,是不是每次都需要去把整个堆的垃圾标记一次,非常的那么用户线程停止的时间就非常长,你想一下,假如你的电脑每使用1个小时就卡10秒,那么你是不是非常操蛋。

标记清除

算法执行过程

堆空间垃圾清理前

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

垃圾清除后

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

算法介绍 标记清除是最开始jvm选择的一种垃圾回收算法,这个算法就和他的名字一样,分为标记,和清除二个过程,首先他会标记所有需要回收的对象,标记结束后对标记的对象进行一个垃圾回收。 缺点 这种方式会有什么缺点呢!它会导致内存空间的浪费,产生大佬不连续的内存碎片,当我们需要一个连续的内存空间存放大对象的时候,因为连续的内存空间不够,导致我们不得又产生一次GC,提高了我们GC产生的频率。

标记整理

算法执行过程

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

算法介绍 标记整理,的执行过程,于标记清除相反,标记清除是标记需要回收的对象,而标记整理却是标记存活的对象,然后把他们全部向一段进行位移,然后清除端边界以外的所有对象。 适用范围 老年代垃圾回收

复制算法

算法执行过程

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

算法介绍 复制算法也是在标记清除上的一个改进,它弥补了标记清除出现大量不连续内存碎片的缺点。它将一个可用的内存空间划分为大小相等的二块区域,每次只使用其中一块区域,当这块区域用完了就把存活的对象放到,另一块空着的区域区,然后把自己清除干净,变成一块空着的区域。这样就解决了内存碎片的问题 缺点 那么这样的算法是不是太过于苛刻了,每次都需要一块空着的区域用于存放对象,牺牲掉了大量的内存。 适用范围 新生代Surivivor区域

堆中对象内存的分配策略指针碰撞

这种分配方式其实是复制算法,标记整理中的携带的一种对象分配策略,我们如何区分什么是用过的,什么是没用过的,这时我们通过一个指针,作为一个分界点指示器,那所需要分配的内存,就仅仅是把指示器指针向空闲空间那边挪动一段与对象大小相等的距离,这种分配方式称为”指针碰撞”(Bump the Pointer)。

空闲列表

空闲是标记清除中对对象分配的一个策略,因为标记清除中我们的内存划分的随机的,已使用内存和未使用内存相互交错,那么我们如何把他们关联起来,虚拟机针对这种交错的内存维护了一个列表,记录哪些内存块是可用的,在分配的时候找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式成为”空闲列表”(Free List)。

OOM异常

其实OOM在上面介绍了堆内存的划分和收集过程中,大家也应该对它有了一定的认识了,OOM异常是发生在老年代Old中的一个异常,当我们老年代中无法在存放对象的时候,就会报OOM内存溢出异常

代码语言:javascript代码运行次数:0运行复制

public class HeapOomError {    public static void main(String[] args) {        List list =new ArrayList();        int i=0;        while (true){            try {                Thread.sleep(100);            } catch (InterruptedException e){                e.printStackTrace();            }            list.add(new byte[5 * 1024 * 1024]);            //System.out.println("count is:"+(++i));        }    }}

设置堆空间的大小

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

最后我们得到的结果如下

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

小结

总而言之我们需要的优化的GC的损耗和避免内存溢出的出现,从而提高我用户良好使用体验。

总结

最后我为大家准备了Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。点击这里备注csdn,自行下载!只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141649.html原文链接:https://javaforall.cn

以上就是2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/31518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月3日 23:42:19
下一篇 2025年11月3日 23:42:42

相关推荐

  • 比特币在历史上首次刺穿了$ 110k的门槛

    比特币在5月22日的历史上首次刺穿了110,000美元的门槛,并在binance上打印了110,867美元的盘中高点 比特币的价格在周一历史上首次刺入了111,000美元的门槛,并在二元上打印了111,867美元的盘中高点。 拉力赛的最新腿是由跨越机构流动,公司平衡表积累和安装宏观经济压力的催化剂的…

    2025年12月7日
    000
  • Binance列出了来自BitGo Trust的支持

    binance宣布了世界自由金融usd(usd1)的上市,这是一种新的菲亚·斯塔布尔币,交易定于2025年5月22日开始 Binance是世界上最大的加密货币交易所交易量,该交易量是在5月22日12:00 UTC列出了世界自由金融的美元(USD1)。 交易所将开放稳定股票对usd1/usdt的交易。…

    2025年12月7日
    000
  • Polkadot(DOT)与Berachain(Bera):哪个加密货币购买?

    加密货币市场本周反弹,比特币飙升至创纪录的高度,所有硬币的总估值达到3.5万亿美元。 加密货币市场本周的反弹很强,比特币(BTC)飙升至创纪录的高位,所有硬币的总估值现在超过3.5万亿美元。 贸易商正在将他们的赌注放在新的加密牛跑步上,该公司将使比特币提高到150,000美元,而大多数Altcoin…

    2025年12月7日
    000
  • Wicknell Chivayo礼物Reuben Barwe A Toyota Land Cruiser VXR LX 300系列和100,000美元现金

    威克内尔·奇瓦耶(wicknell chivayo)是一个经常卷入争议的人物,被称为津巴布韦的“招待企业家”,他的最新表演再次成为头条新闻。 人物经常全神贯注于激烈的讨论中,并被广泛地看作是“招标企业家”向资深ZBC记者致敬。 威克内尔·奇瓦耶(Wicknell Chivayo)是一个经常陷入争议的…

    2025年12月7日
    000
  • 比特币价格保持在历史最高水平

    在5月21日的出色激增之后,比特币价格保持在其历史最高水平,公牛在很大程度上被控制着市场的价格发现。 比特币的价格在5月21日的历史最高水平上保持近距离,公牛在市场方面的探索方面很大程度上受到控制。 在达到111,861美元的高高点之后,比特币(BTC)的股价为110,300美元,然后反弹更高。 尽…

    2025年12月7日
    000
  • Remittix(RTX)预售势头势头,因为投资者在$ 600B汇款市场中的目标中断

    莱特币和remittix正在引起人们的关注,因为在渴望真正的公用事业的市场中,高级潮汐发挥了作用。 xrp价格预测表明,如果法律清晰度降落, 在加密货币市场中,对具有清晰效用的代币产生了新的兴趣,莱特币和Remittix随着高层播放而引起关注。尽管XRP价格预测正在加热,因为法律清晰度可以释放出强大…

    2025年12月7日
    000
  • LINK币未来如何?2025-2031年Chainlink(LINK)币价格预测

    目录 Chainlink(LINK)币概述Chainlink(LINK)币价格预测:技术分析Chainlink(LINK)币价格分析每日图表上的LINK币价格分析4小时图表上的LINK币价格分析LINK币技术指标:水平和行动每日简单移动平均线 (SMA)每日指数移动平均线 (EMA) Chainli…

    2025年12月7日 好文分享
    000
  • 市值前十的虚拟币最新版 市值前十的虚拟币是哪些

    市值前十的虚拟币分别是:1.比特币(BTC),2.以太坊(ETH),3.泰达币(USDT),4.币安币(BNB),5.美元硬币(USDC),6.瑞波币(XRP),7.卡尔达诺(ADA),8.狗狗币(DOGE),9.索拉纳(SOL),10.波场(TRX),这些虚拟币在加密货币市场中占据重要地位,具有不…

    2025年12月7日
    000
  • SXT币爆发在即?深度揭秘数据协议项目新宠!

    目录 一、为什么智能合约“看不清”?二、SXT 到底在做什么?代币是干嘛的?三、SXT 代币的作用,简单说两个:四、在当下阶段,这样的机制为什么重要?五、总结:SXT 的潜力值不值得继续关注? 最近,一个名叫 space and time(sxt) 的项目上线了币安,引发了不少讨论。网上很多解读偏“…

    2025年12月7日
    000
  • 什么是Hifi Finance(HIFI)币?HIFI代币信息和代币经济学概述

    目录 什么是Hifi Finance(HIFI)币?背景资料Hifi Finance 的功能借款贷款流动性Hifi Finance 如何运作?借款流程贷款流程Hifi代币是什么?HIFI代币信息和代币经济学HIFI 币未来会达到10 美元吗?总结 defi 不仅局限于交易、兑换和加密货币,它还可以通…

    2025年12月7日 好文分享
    000
  • 喜报Bold Technologies与My Aion推出25亿美元智慧城市AI平台

    总部位于阿布扎比的bold technologies(bold控股公司的子公司)与国际人工智能公司my aion合作,推出了一项价值25亿美元的智慧城市计划,旨在通过ai技术改造城市基础设施。 两家公司宣布开发一个名为Aion Sentia Cognitive City的平台,用于管理复杂的城市系统…

    2025年12月7日
    000
  • Link币价格预测2025年-2025年:Link币未来会涨到多高?

    chainlink 是一个去中心化的预言机网络,连接智能合约和现实世界数据,使链外信息的交互安全可靠。chainlink 通过防止未经授权的访问和数据验证,增强了 defi、游戏、保险及其他区块链技术行业的功能。 如果你打算研究 chainlink 的价格预测,就必须分析市场动态以做出明智选择。本文…

    2025年12月7日
    100
  • Bybit虚拟卡有效期多长?Bybit虚拟卡一直审核中怎么办?

    bybit虚拟卡是一款功能强大且安全可靠的虚拟货币借记卡,可以让投资者更便捷地使用虚拟货币进行消费。当前bybit虚拟卡没有任何开户门槛,并且也支持大陆用户在线开通,另外不收取任何开卡费用、不收取年费管理费等等多个优势,因此是当下最热门的借记卡之一。当用户拥有bybit虚拟卡之后,最关注的一个问题有…

    2025年12月7日
    000
  • 虚拟币市值前十的是哪些 市值前十的虚拟币盘点

    市值前十的虚拟币分别是:1. 比特币(BTC),2. 以太坊(ETH),3. 泰达币(USDT),4. 币安币(BNB),5. 美元币(USDC),6. 瑞波币(XRP),7. 卡尔达诺(ADA),8. 狗狗币(DOGE),9. 索拉纳(SOL),10. 波场(TRX)。这些虚拟币各具特色,从比特币…

    2025年12月7日
    000
  • 世界上最值钱的虚拟币top10 最值钱的虚拟币是哪些

    世界上最值钱的虚拟币Top10包括:1.比特币,2.以太坊,3.泰达币,4.币安币,5.卡尔达诺,6.狗狗币,7.波场,8.莱特币,9.波尔卡adot,10.索拉纳。这些虚拟币在市场上具有较高的市值,并在区块链技术和应用场景上展现出巨大的潜力。 世界上最值钱的虚拟币Top10包括许多备受瞩目的加密货…

    2025年12月7日
    000
  • 虚拟币市值top10盘点 虚拟币市值最高的是哪些

    虚拟币市值最高的是比特币(BTC)、以太坊(ETH)和泰达币(USDT)。1.比特币市值最高,因其去中心化和有限供应。2.以太坊次之,支持智能合约和DApps。3.泰达币是稳定币,与美元挂钩,流动性高。 在虚拟货币市场中,市值是衡量一个虚拟币的重要指标之一。市值越高的虚拟币通常意味着其流动性更好,接…

    2025年12月7日
    000
  • NFT与代币有什么区别?NFT与代币差异的简单指南

    目录 什么是代币?代币类型什么是 NFT?NFT 的主要特点NFT 与代币:主要区别现实世界的例子为什么重要结论 什么是代币? 代币是在区块链上创建的数字资产。它们可以代表各种事物,例如货币、访问权限,甚至是项目中的投票权。代币通常具有可互换性,这意味着每个代币都与其他代币相同。例如,一个比特币的价…

    2025年12月7日
    000
  • 一文盘点判断比特币BTC是否接近周期顶部的指标有哪些

    摘要 众所周知,比特币市场周期顶部的预测非常困难,但结合技术指标和行为指标可以提供强有力的信号。 MVRV-Z 评分、Pi 周期顶部指标、交易量趋势、Puell 倍数和交易所流入量可以准确预测比特币价格周期顶部。 BTC 可能正接近其当前市场周期的最后阶段——先是剧烈的反弹,随后是大幅回调,最终进入…

    2025年12月7日 好文分享
    000
  • 虚拟币名称一览表 常见的虚拟币叫什么

    常见的虚拟币包括:1.比特币(BTC),首个加密货币;2.以太坊(ETH),支持智能合约的平台;3.莱特币(LTC),改进比特币的快速交易币种;4.比特币现金(BCH),解决比特币网络拥堵的分叉币;5.瑞波币(XRP),用于金融机构跨境支付;6.卡尔达诺(ADA),注重安全和可扩展性的第三代区块链;…

    2025年12月7日
    000
  • 2025年度前十加密货币交易所排行榜出炉 可靠货币交易所排名

    2025可靠安全的货币现货交易平台有:1、币安,交易对丰富,费用低廉,高级交易功能;2、HTX火币,多种交易对,低交易费用,友好的用户界面;3、OKX,多种交易对,低交易费用,多种交易工具;4、Coinbase;5、Kraken… Binance 2025Binance币安 | 一键直达…

    2025年12月7日 好文分享
    000

发表回复

登录后才能评论
关注微信