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)

大家都在看

  • SpringMVC

    [TOC] 一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是…

    Java 2023年6月13日
    065
  • maven工程servlet实例之导入项目依赖jar包

    maven工程servlet实例之导入项目依赖jar包 添加 jar 包的坐标时,还可以指定这个 jar 包将来的作用范围。每个 maven 工程都需要定义本工程的坐标,坐标是 m…

    Java 2023年6月6日
    084
  • WC2022入职集训课程【职场礼仪与职业素养】

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月5日
    064
  • input框设置禁用状态

    input设置为不可编辑的状态(三种方法,可自行选择) 1. disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接…

    Java 2023年6月5日
    072
  • CRM汇客 牛刀小试 5个BUG修复

    1.权限管理-用户管理-高级搜索-手机号搜索不可用 1.2解决思路 1.2.1 定位接口 接口名:system/user/list 请求方式:GET请求 1.2.3 确定bug所在…

    Java 2023年6月6日
    075
  • 面向对象设计与构造2022第四单元总结

    一、总结本单元作业的架构设计 ​ 这里展示一下第三次作业的类图,相当于整个单元的架构设计。 ​ 首先,通过第四单元手册的学习,我们可以得知UML类图、顺序图和状态图每一种图它的元素…

    Java 2023年6月10日
    073
  • paoding-rose 之 maven配置

    junit junit 4.11 jar test log4j log4j 1.2.17 com.54chen paoding-rose 1.0 com.54chen paodin…

    Java 2023年6月6日
    072
  • 分享两个实用的shell脚本

    各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本 一键部署shell脚本 由于个人部署,会习惯把jar放到lib目录下面,如果你没有…

    Java 2023年6月13日
    082
  • 图解设计模式:身份认证场景的应用

    文章首发在公众号(龙台的技术笔记),之后同步到博客园和个人网站:xiaomage.info 今天和大家聊一聊,如何合理的将多种设计模式放到同一个业务场景中 业务背景 最近接到一个认…

    Java 2023年6月14日
    0100
  • 统计项目的java代码总行数

    http://www.oschina.net/code/snippet_209431_7358 wc -l $( find . – type f -name ‘*.java’ ) …

    Java 2023年5月29日
    064
  • Core Java 总结(字符和字符串类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题…

    Java 2023年5月29日
    084
  • SpringCloud中集成Sleuth实现链路追踪

    场景 SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/…

    Java 2023年5月30日
    080
  • Spring Cloud认知学习(三):声明式调用Feign的使用

    Feign 使用示例 1.导入依赖: 2.新建Feign Interface 3.创建服务消费者 4.测试 补充: 💡上一篇介绍微服务构建起来后,使用Ribbon来解决多个服务的负…

    Java 2023年5月30日
    082
  • git 重写历史

    link:date: 2022-08-30 历史提交commit信息修改 修改最新log $ git commit –amend 修改多个提交信息 Git 没有一个改变历史工具,…

    Java 2023年6月13日
    071
  • 并发编程之:AQS源码解析

    大家好,我是小黑,一个在互联网苟且偷生的农民工。 在Java并发编程中,经常会用到锁,除了Synchronized这个JDK关键字以外,还有Lock接口下面的各种锁实现,如重入锁R…

    Java 2023年6月7日
    086
  • Json 序列化框架导致 CPU 使用率过高

    问题现象:CPU 负载过高 我们线上的 jenkins 系统,时不时会发生 CPU 负载过高的现象。 CPU 负载过高后,SRE 同学会收到电话告警。 在我们的监控系统中,可以看到…

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