jvm垃圾收集器

1.Serial收集器(新生代)

(1)单线程收集器

(2)采用复制算法,用于新生代垃圾回收

(3)垃圾回收期间需要STW(Stop The World),STW表示垃圾回收线程不与用户线程并发执行

2.Serial Old收集器(老年代)

(1)与Serial相似

(2)采用标记整理算法,用于老年代的立即回收

3.ParNew收集器(新生代)

(1)是Serial的多线程版本

(2)除此之外与Serial收集相似

4.Parallel Scavenge收集器(新生代)

(1)基本功能与ParNew收集器相似

(2)区别在于该收集器是要达到一个可控制的吞吐量(吞吐量=运行用户代码的时间/(运行用户代码的时间)+(垃圾回收的时间))

(3)可以高效的利用cpu时间

(4)提供了参数可以精确的控制吞吐量,分别是控制最大垃圾回收停顿时间,也可以直接设置吞吐量大小

5.Parallel Old收集器(老年代)

(1)Parallel Scavenge收集器的老年代版本,采用标记整理算法

6.CMS收集器(老年代)

(1)采用标记清除算法,用户老年代的垃圾回收

(2)主要关注的是尽可能的缩短垃圾回收时用户线程的停顿时间

(3)主要有一下几个步骤:

①初始标记:简单标记一下GC ROOTS能直接关联到的节点,此阶段需要STW

②并发标记:进行GC Roots Tracing的过程,此阶段与用户线程并发执行

③重新标记:对并发标记时用于线程产生的新的节点进行标记,此阶段需要STW, 但是此阶段为多线程并行的(多个垃圾回收线程同时进行)

④并发清除:使用标记清楚算法对对象进行回收,此阶段与同户线程同时进行

(4)缺点:

①无法清除浮动垃圾,由于最后一个阶段并发清除是与用户线程同时进行的,所以用户线程可能会产生新的可会收的对象

②可能会产生垃圾碎片,由于该回收器采用的是标记清除算法

7.G1收集器

(1)G1(Garbage-First)

(2)G1收集器作用于整个JVM堆

(3)G1收集器将整个堆分成了大小相同的独立区域(Region)

(4)在后台会维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的Region

Original: https://www.cnblogs.com/liwangcai/p/10752567.html
Author: 神奇海螺。
Title: jvm垃圾收集器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/574182/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 重构聚合支付案例教你如何写出高扩展性易读的代码

    人间清醒 以下代码逻辑为:按照不同的支付方式调用不同支付方式的逻辑流程。痛点: /** * 旧的支付 * * @param mode 模式 * @param payVO 支付签证官…

    Java 2023年6月5日
    093
  • 力扣刷题之路—–链表问题

    public ListNode mergeKLists(ListNode[] lists) { if(lists.length==0) return null; ListNode …

    Java 2023年6月5日
    0146
  • Spring实例化bean之后的处理, 关于BeanPostProcessor接口的使用

    业务需求:缓存页面,展示需要缓存的所有对象,每类对象在字典表中有编码对应,点击某个对象可以缓存某类对象,每类对象都有自己的缓存runner(弱弱的说一句,本人看到这里的第一反应就是…

    Java 2023年6月8日
    069
  • 全排列的详细解析

    好久没有更新了,今天来更新一下。今天来说一下关于全排列的问题那么第一个问题,什么是全排列?全排列可以理解为,数学里面的排列组合更简单的说呢,就是,从一到n这n个数有多少种排列情况?…

    Java 2023年6月5日
    083
  • 【SpringBoot】【3】读取配置文件中的参数并配置给全局使用

    前言: 读取配置文件参数的方法:@Value(“${xx}”)注解。但是@Value不能为static变量赋值,而且很多时候我们需要将参数放在一个地方统一管…

    Java 2023年5月29日
    0141
  • Integer包装类中值的比较

    前提知识:”==”当比较基本类型时比较的是值,当为引用类型时比较的是内存地址 首先看代码和结果: Integer integer1 = new Intege…

    Java 2023年6月9日
    078
  • 我操作MySQL的惊险一幕

    背景 前几天因工作需要,组长给我安排了一个数据清洗的任务。 任务:把 A 表的数据洗到 B 表。 我的第一反应, 什么是「洗」?洗数据是什么?洗钱我倒是知道。 不过我不能慌啊,于是…

    Java 2023年6月10日
    087
  • 与socket相关的流

    我看先看一下通过socket取得的流的运行类型 InputStream inputStream = socket.getInputStream(); 可以看到是SocketInpu…

    Java 2023年6月5日
    078
  • RabbitMQ的初识和快速入门

    1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以…

    Java 2023年6月7日
    067
  • 从华为离职了

    遗憾的是,我转正后看到了大家的能力和努力,也意识到在预期的时间内难以达到我想要的高度,最终经过各方面的考虑,决定放弃这个职位,重新回到外企找回适合我的节奏。 依依不舍的离职后,回想…

    Java 2023年6月15日
    052
  • 《HDFS源码剖析》–初品ing

    HDFS概述 ​ HDFS是Hadoop 分布式文件系统,可以运行在通用硬件上、提供流式数据操作、能够处理超大文件的分布式文件系统。HDFS具有高度容错、高吞吐量、容易扩展、高可靠…

    Java 2023年6月8日
    069
  • 1小时搭建全栈Web应用框架,支持二次开发,随时更新扩展

    现在越来越多的公司企业选择自主开发SaaS软件、OA工作流办公自动化体系、企业信息数据处理运用平台以及许多各种各样的业务流程管理系统。但如何选择一个合适好用的开发框架又成了他们的一…

    Java 2023年6月5日
    082
  • java8 lambda list map 便捷操作记录

    1.list的直接forEach List<useraccount> list = new ArrayList<>(); //{}&#x5185;&…

    Java 2023年6月5日
    0123
  • 转摘:Spring、SpringMVC和Springboot的区别

    一、概念 1、Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就…

    Java 2023年5月30日
    073
  • 语法糖甜不甜?巧用枚举实现“状态”转换限制

    语法糖 语法糖(Syntactic sugar),也被译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语…

    Java 2023年6月5日
    087
  • java MongoDB查询(一)简单查询

    MongoDB的java驱动提供了查询的功能,查询条件也是bson对象,这篇就看下怎么进行简单的数据查询 1、数据结构 集合:firstCollection 数据内容: { &#8…

    Java 2023年6月7日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球