JVM的GC

news/2024/7/24 12:55:58 标签: jvm

GC

年轻代老年代参数
SerialSerial Old-XX:+UseSerialGC
Parallel ScavengeParallel Old-XX:+UseParallelGC -XX:+UseParallelOldGC
Parallel NewCMS-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
G1G1-XX:+UseG1GC
ZGCZGC-XX:+UseZGC
GC串并行发作用位置算法特点场景
Serial串行新生代复制算法响应速度单CPU环境下client模式
Parallel New并行新生代复制算法响应速度多CPU环境下Server模式下与CMS配合使用
Parallel Scavenge并行新生代复制算法吞吐量多运算,少IO
Serial Old串行老年代标记-整理响应速度单CPU环境下client模式
Parallel Old并行老年代标记-整理吞吐量多运算,少IO
CMS并发老年代标记-清除响应速度B/S业务
G1并发,并行新生代,老年代复制算法、标记-整理响应速度服务端应用
ZGC新生代,老年代复制算法服务端应用

CMS (Concurrent Mark Sweep)

参考

  • 目标:适合于B/S等对响应时间要求高的场景
  • jdk1.4后期版本开始引入的新gc算法
  • ParNew(新生代) + CMS(老年代)组合使用
  • 使用标记-清除算法
  • 缺点:运行结束产生大量空间碎片
  • 缺点:由于分配给用户使用的老年代空间不足造成可能出现“Concurrent Mode Failure”

G1

参考

  • 目标:适应不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间,同时兼顾良好的吞吐量
  • JDK 7u4发行版时被正式推出
  • 区域:新生代和老年代
  • 使用标记整理算法,不会产生空间碎片
  • soft real-time(软实时)
  • Region-card(内存模型)
  • 分代收集算法
  • 三色标记法

ZGC

参考

  • jdk11开始引入,最好在jdk17中使用
  • 停顿时间更短。停顿时间不超过10ms,停顿时间不会随着堆的大小,或者活跃对象的大小而增加
  • 支持更大的堆。支持8MB~4TB级别的堆(未来支持16TB)
  • 转移阶段并发。转移阶段也是并发执行的,ZGC几乎所有暂停都只依赖于GC Roots集合大小,停顿时间不会随着堆的大小或者活跃对象的大小而增加。与ZGC对比,G1的转移阶段完全STW的,且停顿时间随存活对象的大小增加而增加。

jdk与GC

jdk各个版本默认GC

# 打印默认参数,包括GC参数
java -XX:+PrintCommandLineFlags -version
jdk版本默认GC新生代老年代默认参数
jdk8Parallel Scavenge + Parallel OldParallel ScavengeParallel Old-XX:+UseParallelGC
jdk11G1G1G1-XX:+UseG1GC
jdk17G1G1G1-XX:+UseG1GC
jdk21``

jvm参数对应gc

参数代表GC
-XX:-UseSerialGCSerial + Serial Old
-XX:-UseParNewGCParNew + Serial Old
-XX:-UseParallelGCParallel Scavenge + Parallel Old
-XX:-UseParallelOldGCParallel Scavenge + Parallel Old
-XX:-UseConcMarkSweepGCCMS + ParNew
-XX:-UseG1GCG1
-XX:+UseZGCZGC

http://www.niftyadmin.cn/n/226761.html

相关文章

面向计算机视觉的深度学习:6~10

原文:Deep Learning for Computer Vision 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实…

代码随想录算法训练营第五十八天| 739. 每日温度、496. 下一个更大元素 I。

739. 每日温度 题目链接:力扣 题目要求: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升…

【华为OD机试真题】对称字符串(javaC++python)

对称字符串 时间限制:1s空间限制:256MB限定语言:不限 题目描述: 对称就是最大的美学,现有一道关于对称字符串的美学。已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR 相信你已经发现规律了,没错!就是…

如何使用Midjourney辅助建筑平面设计,常用的建筑平面效果图提示和使用效果展示(内附Midjourney提示词网站)

文章目录一、室内建筑平面设计1.AutoCAD图纸(别墅首层图)2.平面效果图3.三维平面透视图二、建筑室内设计1.现代简约2.波西米亚风格3.工业风格4.沿海风格5.法国风格6.现代风格7.提示增加颜色倾向8.提示中增加设计师9.其它一些尝试三、好用的Midjourney提示…

windows下编译log4cxx

环境:win7,vs2008/vs2010 1.介绍 log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c移植版,用于为C程序提供日志功能,以便开发者对目标程序进行调试和审计。有关log4c…

uniapp:mosowe-table高级表格组件

演示地址 下载地址 为偷懒而开发: 多级表头,默认子集占父级宽度50%,flex布局根据设置自动生成搜索区搜索区可设置默认展开/收起可以设置左右固定列,多选框及索引列默认左侧固定用户可自主设置展示列组件内部翻页、刷新及搜索事件…

nvm软件使用-同一个环境下控制多个不同node版本

1.使用场景 nvm是一个用于管理Node.js版本的工具,它可以让你在同一台机器上安装和切换不同的Node.js版本。使用nvm的好处有以下几点: 1.1.nvm可以让你轻松地测试你的代码在不同的Node.js版本下的兼容性和性能,避免因为版本差异导致的问题。…

【RabbitMQ】SpringBoot整合RabbitMQ、实现RabbitMQ五大工作模式(万字长文)

目录 一、准备 1、创建SpringBoot项目 2、添加配置信息 3、创建配置类 二、RabbitMQ的配置类里创建队列 三、RabbitMQ的配置类里创建交换机及绑定队列 四、SpringBoot整合RabbitMQ入门案例 1、生产者 2、消费者 四、SpringBoot里实现RabbitMQ五大工作模式 1、简单模式…