0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

JVM入门之历代垃圾回收器 1

jf_78858299 来源:北洋洋洋 作者:北洋 2023-02-10 11:29 次阅读

分类

一,采用分代理念的垃圾回收器:

1.年轻代:Serial PartNew Parallel Scavenge

2.老年代:

CMS Serial Old(MSC) Parallel Old

二,不采用分代理念的垃圾回收器:

G1 ZGC Shenandoah

可搭配使用的各个收集器之间关系图:

并行和并发

很多人经常把这两个搞混,当然笔者刚开始的时候也是傻傻分不清楚。其实只要记住并行说的是GC 线程之间的关系,而并发说的是GC和用户线程之间的关系。

并行:同一时间有多条这样的线程在协同工作,但是此时用户线程是等待状态

并发:同一时间GC和用户线程可以一起工作一起运行。因此程序依然能够响应用户线程的操作但是由于GC线程也占用了一部分系统资源,所以此时的用户线程处理的效率会下降

年轻代垃圾回收器

Serial收集器

Serial收集器

特点

垃圾回收时需要STW,整个STW需要停止掉所有的用户线程来保证回收过程中引用关系不会发生变化。

但是并不是说垃圾回收的时候只会启用一个回收线程,更准确的描述应该是 「同一时间只允许一个垃圾回收线程工作」 ,也就是 「不支持并行工作」 ,多个GC线程之间串行工作。

优点

1.对于内存资源受限的机器来说比较友好:

由于回收时停止掉了所有的用户线程,因此他不必维护那些: 「用户线程和GC线程同时运行的时候在回收过程中为了保证引用关系发生变化的额外内存开销」 ;比如上一篇文章说到的原始快照和增量更新。

2.而且由于GC线程不是并行的,所以没有线程之间的交互;对于处理器内核少(线程少)的机器来说,

第一点也就是线程串行执行一个线程完了之后才能执行下一个线程,而对于并行的来说其实本质上还是串行只不过各个线程间可以自由来回切换,所以需要对切换前后的资源进行额外的保存等等因此并发涉及到的这部分线程交互开销对于该款串行执行的GC线程时没有的

图示:

串行和并行

缺点

但是缺点也很明显:回收过程中停止掉所有用户线程,对用户肯定是不能容忍的

PartNew收集器

PartNew收集器

特点:

该款垃圾收集器和刚才讲的第一个Serial收集器其实最大的不同就是GC Thread可以并行的区别。注意是 「并行」 ,之后讲解的 「CMS」 才是可以实现GC Thread 「并发」 的收集器。

Parallel Scavenge收集器

特点

该款垃圾收集器同样和PartNew收集器一样,并行GC线程。只不过该款收集器重点是倾向于 「吞吐量」

老年代垃圾回收器

Serial Old收集器

Serial Old收集器

区别于Serial回收器只是回收算法的不同

Parallel Old收集器

Parallel Scavenge收集器的老年代版本,支持多线程 「并发」 收集。

组合

「吞吐量优先垃圾回收器组合」

新生代采用Parallel Scavenge收集器,老年代采用Parallel Old收集器

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GC
    GC
    +关注

    关注

    0

    文章

    9

    浏览量

    17077
  • JVM
    JVM
    +关注

    关注

    0

    文章

    157

    浏览量

    12206
  • 线程
    +关注

    关注

    0

    文章

    504

    浏览量

    19647
收藏 人收藏

    评论

    相关推荐

    电子垃圾回收隐患:非法回收1吨获利万元

    广州市政协提交的一份调研报告显示,非法回收作坊每处置1吨电子垃圾可获利3000~10000元,报告建议,应通过“谁生产,谁承担回收处理费”等方式规范管理电子
    发表于 07-07 11:37 2138次阅读

    固态硬盘垃圾回收方法

    由于NAND闪存的固有限制,写前擦除和擦除粒度较大,基于NAND Flash的固态硬盘(SSD)需要执行垃圾回收以重用失效页。然而垃圾回收带来的高开销会显著降低SSD的性能,也会直接影
    发表于 12-03 10:50 2次下载
    固态硬盘<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>方法

    Jvm垃圾回收机制及性能调优实战

    JVM中自动检测并移除不再使用的数据对象的这种机制称为:垃圾回收,简称GC。JVM通过使用垃圾收集
    发表于 04-03 14:31 2次下载

    带颜色的JVM垃圾回收三色标记法

    三色标记法是一种垃圾回收法,它可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的。
    的头像 发表于 10-20 14:23 1614次阅读

    详解JVM垃圾回收算法和垃圾回收

    JVM 垃圾回收机制是对堆中没有使用的对象进行回收,那么判断对象是否“存活”就至关重要。在判断对象是否“存活”的方法中,我们会介绍引用计数算法和可达性分析法。
    的头像 发表于 03-29 13:55 1472次阅读
    详解<b class='flag-5'>JVM</b>的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b><b class='flag-5'>器</b>

    JVM入门历代垃圾回收 2

    很多人经常把这两个搞混,当然笔者刚开始的时候也是傻傻分不清楚。其实只要记住并行说的是GC 线程之间的关系,而并发说的是GC和用户线程之间的关系
    的头像 发表于 02-10 11:29 556次阅读
    <b class='flag-5'>JVM</b><b class='flag-5'>入门</b><b class='flag-5'>之</b><b class='flag-5'>历代</b><b class='flag-5'>垃圾</b><b class='flag-5'>回收</b><b class='flag-5'>器</b> 2

    JVM入门关于GC的扩展知识1

    本章主要是对上一篇文章讲的垃圾回收机制的扩展,垃圾回收其实本身是有很多可以优化的点的,本章就进行对这些优化点进行介绍。
    的头像 发表于 02-10 11:35 536次阅读
    <b class='flag-5'>JVM</b><b class='flag-5'>入门</b><b class='flag-5'>之</b>关于GC的扩展知识<b class='flag-5'>1</b>

    JVM入门关于GC的扩展知识2

    本章主要是对上一篇文章讲的垃圾回收机制的扩展,垃圾回收其实本身是有很多可以优化的点的,本章就进行对这些优化点进行介绍。
    的头像 发表于 02-10 11:35 546次阅读
    <b class='flag-5'>JVM</b><b class='flag-5'>入门</b><b class='flag-5'>之</b>关于GC的扩展知识2

    JVM入门垃圾回收算法

    根据如何判定对象是垃圾垃圾回收算法分为两类:1、 「引用计数式垃圾收集」 (判定垃圾是通过引用
    的头像 发表于 02-10 11:40 774次阅读
    <b class='flag-5'>JVM</b><b class='flag-5'>入门</b><b class='flag-5'>之</b><b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    详细解析JVM中的垃圾回收机制

    Java语言的一大优势在于其具有自动垃圾回收(Garbage Collection,GC)机制,让开发者无需关心内存的分配与释放。
    的头像 发表于 06-06 16:53 1975次阅读

    垃圾收集JVM参数配置

    本篇文章我们就来给大家介绍垃圾收集JVM 参数配置。 JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况
    的头像 发表于 10-09 16:35 524次阅读
    <b class='flag-5'>垃圾</b>收集<b class='flag-5'>器</b>的<b class='flag-5'>JVM</b>参数配置

    jvm参数的设置和jvm调优

    。 -XX:SurvivorRatio:设置Eden区与Survivor区的大小比例。 -XX:MaxPermSize:设置永久代的大小。 垃圾回收参数
    的头像 发表于 12-05 11:36 1410次阅读

    jvm配置的mx

    用于设置JVM的最大堆内存大小,即堆的上限。当堆内存不足时,JVM会触发垃圾回收机制以释放内存。如果垃圾
    的头像 发表于 12-05 14:24 674次阅读

    智能垃圾回收箱控制系统硬件设计

    身份识别;身份验证后,控制启动电机打开回收门,持续开启7秒;用户投放垃圾后,回收门自动关闭。超声波模块检测桶内垃圾容量,超过设定值时,控制
    的头像 发表于 04-13 08:10 774次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱控制系统硬件设计

    从原理聊JVM(一):染色标记和垃圾回收算法

    更好地优化自己的代码,并解决一些潜在的性能问题。 本文及后续文章将从原理聊起,对JVM的内存分配、GC、编译等知识进行分析和总结。 1 JVM运行时内存划分 1.1 运行时数据区域    • 方法区 属于共享内存区域,存储已
    的头像 发表于 08-20 15:25 181次阅读
    从原理聊<b class='flag-5'>JVM</b>(一):染色标记和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法