gc是什么意思(字母圈控制gc是什么意思)

垃圾收集器作为面试必问之一,往深了会有很多,但是一些入门的问题还是希望大家能够马上回答。

GC是什么?为什么要GC?

GC就是垃圾收集的意思(避免一些人不知道垃圾收集器的简写),因为内存管理是程序员最容易出问题的地方,所以Java提供了自动垃圾收集功能,它可以判断一个对象是否可以被回收然后进行回收从而达到内存管理,这样Java程序员就不用担心内存管理了。

你知道那些垃圾收集算法?

标记-清除算法:标记要清除的对象,然后统一清除要回收的对象,或者反过来也行,标记存活的对象,清理未被标记的。

优点:算法简单;

缺点:效率不稳定、对象越多效率越低,存在内存碎片,后面可能大对象就没有地方放,垃圾收集器没有使用这种算法的。

标记-复制算法:将内存分成相同的两份,每次只用其中一份,当一份用完的时候触发一次回收,把存活的对象复制到另外一边,然后原来那一半清理。

优点:无内存碎片,实现简单、运行高效。

缺点:浪费了一半的内存。

新生代的垃圾收集器常用这个算法的优化版本。

优化方式:根据经验,在新生代对象98%都熬不过第一轮收集,所以我们在新生代的划分就可以不用1:1的比例来划分了。在JVM中新生代的区域划分:一个80%的Eden、两个各占10%的Survivor。

把Eden和一个Survivor(Survivor)作为使用那一份,另一个Survivor作为预留区,每次回收时把Eden和第一个Survivor中存活的对象转移到预留的Survivor,然后清空Eden和第一个Survivor,后面就把Eden和第二个Survivor当做使用区域,第一个Survivor当做预留区域,下一次回收他们的身份又转变过来。

具体的就要搬出JVM内存分布图了,多看几遍总是好的,这次重点是圈出部分,如下图:

一文回答垃圾收集器相关问题

标记-整理算法:标记出存活的对象,然后将所有存活的对象往一端移动。

优点:解决了复制算法对象太多复制效率低问题,也解决了碎片问题。

缺点:移动对象就要修改所有持有对象处的引用,影响效率。

老年代常用算法,因为老年代收集存活对象占大多数,不宜用复制算法。

垃圾收集器算法主要就这三种,这三种可以按照优化方式来理解,直接清除(有碎片)、复制(无碎片、适用于少量存活对象情况)、整理(无碎片、适用于大量存活对象的情况)

你知道哪些垃圾收集器?

Serial收集器:是最早、最基础的垃圾收集器,并且是单线程,实现也比较简单。

Serial:新生代收集器,单线程,采用标记-复制算法。

Serial Old:老年代收集器,单线程,采用标记-整理算法。

ParNew收集器:Serial收集器的多线程版本,新生代收集器,主要用来与CMS收集器配合使用。

Parallel收集器:并行收集器。并发表示垃圾收集器线程与用户线程一起运行,而并行则表示有多个收集器线程同时工作。

重要特点:通过设置一些参数达到一个可控制的吞吐量。

吞吐量=运行用户代码时间/(运行用户代码时间+运行垃圾收集时间)

Parallel收集器:新生代收集器Parallel Scavenge、老年代Parallel Old;

CMS收集器:老年代收集器,标记-清除算法,获取最短回收停顿时间为目标,收集过程包含了并发标记、并行重新标记、并发清理过程。

优点:可以从上图看出只有初始标记和重新标记会暂停用户线程,停顿时间少。

G1收集器:新一代收集器,不再是之前的分新生代、老年代内存划分方式,而是划分成一个一个大小相等的独立区域Region,每次计算出垃圾最多的Region,然后根据预估停顿时间来判断收集Region的数量。

垃圾收集器分布图如下图:

一文回答垃圾收集器相关问题

其中圈在一起的表示他们经常一起组合使用。有人可能觉得收集器太多容易搞混,我们可以按照功能发展来排序可能就好理解了,如下图:

一文回答垃圾收集器相关问题

总结

关于垃圾收集器的主要问题应该就这几个了,把上面的理解了,并且在面试中表达出来基本上也差不多了,如果在深入应该就是在CMS收集器与G1收集器里面的一些具体算法相关的问题了,比如三色标记、跨代引用、并发标记等问题,我在之前的文章中详细的总结,有兴趣的可以去看看。

Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!

一文回答垃圾收集器相关问题

【版权声明】汽车时代网提醒您:请在浏览本网站关于《gc是什么意思(字母圈控制gc是什么意思)》信息时,请您务必阅读并理解本声明。本站部分内容以及图片来源于商家投稿和网络转载,如网站发布的有关的信息侵犯到您的权益,请及时与我们取得联系,邮箱:chief-editor#autotimes.com.cn,我们会尊重您的决定并当天作出删除处理。

(0)

相关推荐

  • 碳水是什么食物 最佳公认减肥一日三餐食谱

    碳水是什么食物 最佳公认减肥一日三餐食谱原创内容,擅自搬运者必究!减脂餐,你吃对了吗?很多人以为减脂餐等于水煮餐,每天只能吃西兰花鸡胸肉,这样的认知是非常无知的。减肥之前,你需要了解科学的知识概念,你才能减少误区提高减脂效果。减肥过程中除了

    2022年8月6日
    17
  • 海苔为什么那么贵 国内海苔哪个牌子好

    海苔为什么那么贵 国内海苔哪个牌子好今天带孩子去万达广场玩,有一促销员拿着试用的海苔给孩子吃,我家孩子平时不吃的,今天不知咋了连续吃了好几个,促销员趁机推销产品,说这个海苔如何如何好,看孩子爱吃就买了两盒,好贵,两盒98元。潘多乐海苔好吗?

    2022年5月15日
    13
  • qq邮箱格式是什么样的 完整的qq邮箱格式

    qq邮箱格式是什么样的 完整的qq邮箱格式很多小伙伴习惯用QQ邮箱,然而每次填写邮箱时填写的都是QQ号@qq.com这样的格式。但是这是十分不安全的,容易泄露自己的QQ隐私。例如现在的毕业季,许多人找工作,简历写的都是带有QQ号的邮箱,这会

    2022年8月7日
    3
  • 数字人民币是什么意思 怎么开通数字人民币

    数字人民币是什么意思 怎么开通数字人民币中新经纬1月6日电 (魏薇 实习生 柴鑫洋)备受瞩目的数字人民币又有最新动向了。1月6日,中新经纬实测发现,数字人民币APP已经上线微众银行(支付)数字人民币钱包以及网商银行(支付宝)数字人民币钱包。

    2022年8月12日
    8
  • 流明是什么意思 大灯流明是什么意思

    流明是什么意思 大灯流明是什么意思中国LED网,是行业人士公认的权威门户网站照明光源的效率(Lm/W)=光通量(Lm)/耗电量(W)光强(I):发光体在指定方向单位立体角内所发射出来的光通量。单位:坎德拉(cd)光通量(Ф):发光体每秒钟所

    2022年8月11日
    5