小研究 - JVM 垃圾回收方式性能研究(三)
本文从几种JVM垃圾回收方式及原理出发,研究了在 SPEC jbb2015基准测试中不同垃圾回收方式对于JVM 性能的影响,并通过最终测试数据对比,给出了不同应用场景下如何选择垃圾回收策略的方法。
目录
4 垃圾回收器性能比较
4.1 测试结果
5 结语
4 垃圾回收器性能比较
最大性能指标 Max-jOPS 是系统最大每秒钟处理的 Java 操作数,可以看做在业务响应不失败的情况下,服务器的极限吞吐量,反映的是系统极限 Java 应用性能。关键性能指标 Critical-jOPS 是系统在 5 个关键 SLA(服务水平协议)10ms, 25ms,50ms,75ms 和 100ms 响应时间下平均每秒 Java 操作数。
4.1 测试结果
测试环境选择使用四路服务器,配置 4 颗 Intel Xeon Platinum 8180 CPU,物理内存大小为 1536G,操作系统为 Red Hat Enterprise Linux 7.6,使用 JDK 版本为 Oracle Java SE 13.0.2。
在此环境下分别使用:
1、-XX:+UseSerialGC(串行回收器)
2、-XX:+UseParallelOldGC(并行回收器)
3、-XX:+ UseConcMarkSweepGC(CMS 回收器)
4、- XX:+UseG1GC(G1 回收器 )
5、-XX:+UseZGC(ZGC)
运行 SPEC jbb2015 测试,并使用参数 -XX:+PrintGCDetails、-Xlog:gc. log 输出垃圾回收详细日志。
图 1 反映了几种垃圾回收器在 SPEC jbb2015 基准测试中的性能表现,可以看出在极限性能指标 Max-jOPS 上,并行回收器 ParallelOldGC 表现最好,这是由于 Max-jOPS 代表系统极限吞吐量 而并行回收器在所有垃圾回收器中最侧重于吞吐量,因此这一指标明显优于其他垃圾回收器。而在关键性能指标上,ZGC 的表现最好,证明在一些有特定响应时间要求的业务场景下,其综合性能最好。ZGC 由于低停顿时间的特性,每次垃圾回收停顿时间不会超 过 10ms,这要远远低于其他垃圾回收方式(见图 2)。一般来说,停顿时间的减少但带来的影响必然是吞吐量的降低,ZGC 垃圾回收处理工作都在与应用线程并发执行,同时也会不可避免地占用很多 CPU 并发工作导致吞吐量降低。但如果同时考虑低响应时间与吞吐量情况下,ZGC 吞吐量降低的程度在可接受的范围之内,但同时其停顿时间减少了一个量级,因此其综合性能表现更好。
图 2 展示了几种垃圾回收方式的平均停顿时间。
其中 ZGC 的停顿时间最短,看到 ZGC 虽然目标定位在停顿时间不超过 10ms,但在实际测试时 ZGC 平均停顿时间约为 2ms,要远远低于 10 毫秒的目标。串行回收器的停顿时间最长,几乎达到秒级,这是由于串行回收器回收时只有单线程,因此停顿的时间要远远高于其他垃圾回收器,因此在实际业务模型中性能很差。而并行回收器、G1 回收器平均停顿时间相差不大,都在 100ms 上下,CMS 回收器则平均在 200ms 左右。
5 结语
本文简述了几种常用的 JVM 垃圾回收方式及其原理,并利用业内权威的 Java 应用性能测试工具 SPEC jbb2015 测试了几种垃圾回收方式的实际性能。因为 SPEC jbb2015 测试模型则具有广泛 的代表性,所以对基于此项测试对垃圾回收的研究有助于开发者在实际应用中合理地对性能进行调优并解决性能问题。
根据SPECjbb2015测试结果来看,当侧重于追求最大吞吐量,如基于Java的后台计算型应用、事务处理时,并行垃圾回收器 ParallelOldGC 表现更好。如追求低停顿时间,快速响应如互联网应用、web 前端等时 ZGC 优势明显,或者也可以使用 G1 垃圾回收器配 合 -XX:MaxGCPauseMillis 参数来限制最大垃圾回收停顿时间。且 ZGC 所支持的超大内存也非常适合需要大量内存的应用程序,比如大数据应用程序。但由于实际业务性能考量标准不同,还需结合每种垃圾回收方式自身特点,合理进行选择。
相关文章:
小研究 - JVM 垃圾回收方式性能研究(三)
本文从几种JVM垃圾回收方式及原理出发,研究了在 SPEC jbb2015基准测试中不同垃圾回收方式对于JVM 性能的影响,并通过最终测试数据对比,给出了不同应用场景下如何选择垃圾回收策略的方法。 目录 4 垃圾回收器性能比较 4.1 测试结果 5 结语 …...
java根据poi解析excel内容
一.HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook Apache POI包中的HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook的区别如下: HSSFWorkbook:一般用于操作Excel2003以前(包括2003)的版本,扩展名是.xls。 XSSFWorkbook:一…...
实验报告-Sublime配置默认语法,以配置Verilog语法为例
实验报告-Sublime配置默认语法,以配置Verilog语法为例 1,下载Verilog语法环境2,Sublime配置语法工作环境,以Verilog语法环境为例。3,打开一个新的Sublime,验证编辑器配置Verilog为默认语法成功!4,Sublime汉化1,下载Verilog语法环境 参考文献: 1,Sublime Text 4加载…...
pve安装ikuai并设置,同时把pve的网络连接到ikuai虚拟机
目录 前因 前置条件 安装ikuai 进入ikuai的后台 配置lan口,以及wan口 配置lan口桥接 按实际情况来设置了 单拨(PPOE拨号) 多拨(内外网设置点击基于物理网卡的混合模式) 后续步骤 pve连接虚拟机ikuai的网络以及其他虚拟机连接ikuai的网…...
Android 面试题 ANR 五
🔥 什么是 ANR 🔥 ANR(Application Not Responding )应用无响应的简称,是为了在 APP卡死时,用户 可以强制退出APP的选择,从而避免卡机无响应问题,这是Android系统的一种自我保护机制。 在Android中…...
实训笔记7.28
实训笔记7.28 7.28笔记一、Hive的基本使用1.1 Hive的命令行客户端的使用1.2 Hive的JDBC客户端的使用1.2.1 使用前提1.2.2 启动hiveserver21.2.3 使用方式 1.3 Hive的客户端中也支持操作HDFS和Linux本地文件 二、Hive中DDL语法2.1 数据库的管理2.1.1 创建语法2.1.2 修改语法2.1.…...
C 游游的二进制树
题目描述 游游拿到了一棵树,共有nnn个节点,每个节点都有一个权值:0或者1。这样,每条路径就代表了一个二进制数。 游游想知道,有多少条路径代表的二进制数在[l,r][l,r][l,r]区间范围内? (请注意…...
收发存和进销存有什么区别?
一、什么是收发存和进销存 1、收发存 收发存是供应链管理中的关键概念,用于描述企业在供应链中的物流和库存管理过程。 收发存代表了企业在采购、生产和销售过程中的物流活动和库存水平。 收(Receiving) 企业接收供应商送达的物料或产品…...
小程序 账号的体验版正式版的账号信息及相关配置
siteinfo.js // 正式环境 const releaseConfig {appID: "",apiUrl: "",imgUrl: "" }; // 测试环境(包含开发环境和体验环境) const developConfig {appID: "",apiUrl: "",imgUrl: "" }…...
AIGC(Artificial Intelligence Generated Content)和 Web3对比,未来发展
一、AIGC(Artificial Intelligence Generated Content)行业 历史背景 AIGC(Artificial Intelligence Generated Content)是指利用人工智能技术生成的内容。随着人工智能技术的不断发展,AIGC 行业逐渐兴起。早期的 AIG…...
机器学习之Boosting和AdaBoost
1 Boosting和AdaBoost介绍 1.1 集成学习 集成学习 (Ensemble Learning) 算法的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。 集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学…...
汇编语言预定义寄存器和协处理器
ARM汇编器对ARM的寄存器和协处理器进行了预定义(包括APCS对r0~r15寄存器的定义),所有的寄存器和协处理器名都是大小写敏感的。 (1)预定义寄存器名 下面列出了被ARM汇编器预定义的寄存器名。 r0ÿ…...
【前缀和】974. 和可被 K 整除的子数组
Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 974. 和可被 K 整除的子数组 题目:示例:题解: 题目: 示例: 题解: 本题与560.和为K的子数组高度相似 同样的,本题利用了前缀和的定理.当(pre[i]-…...
linux页框回收之shrink_node函数源码剖析
概述 《Linux内存回收入口_nginux的博客-CSDN博客》前文我们概略的描述了几种内存回收入口,我们知道几种回收入口最终都会调用进入shrink_node函数,本文将以Linux 5.9源码来描述shrink_node函数的源码实现。 函数调用流程图 scan_control数据结构 str…...
网络运维基础问题及解答
前言 本篇文章是对于网络运维基础技能的一些常见问题的解答,希望能够为进行期末复习或者对网络运维感兴趣的同学或专业人员提供一定的帮助。 问题及解答 1. 列举 3 种常用字符编码,简述怎样在 str 和 bytes 之间进行编码和解码。 答:常用的…...
【RabbitMQ】之保证数据不丢失方案
目录 一、数据丢失场景二、数据可靠性方案 1、生产者丢失消息解决方案2、MQ 队列丢失消息解决方案3、消费者丢失消息解决方案 一、数据丢失场景 MQ 消息数据完整的链路为:从 Producer 发送消息到 RabbitMQ 服务器中,再由 Broker 服务的 Exchange 根据…...
插入排序算法
插入排序 算法说明与代码实现: 以下是使用Go语言实现的插入排序算法示例代码: package mainimport "fmt"func insertionSort(arr []int) {n : len(arr)for i : 1; i < n; i {key : arr[i]j : i - 1for j > 0 && arr[j] > …...
Linux标准库API
目录 1.字符串函数 2.数据转换函数 3.格式化输入输出函数 4.权限控制函数 5.IO函数 6.进程控制函数 7.文件和目录函数 1.字符串函数 2.数据转换函数 3.格式化输入输出函数 #include<stdarg.h>void test(const char * format , ...){va_list ap;va_start(ap,format…...
腾讯云—自动挂载云盘
腾讯云,稍微麻烦了点。 腾讯云服务器,镜像为opencloudos 8。 ### 1、挂载云盘bash #首先通过以下命令,能够看到新的数据盘,如果不能需要通过腾讯云控制台卸载后,重新挂载,并重启服务器。 fdisk -l#为 /dev…...
为Win12做准备?微软Win11 23H2将集成AI助手:GPT4免费用
微软日前确认今年4季度推出Win11 23H2,这是Win11第二个年度更新。 Win11 23H2具体有哪些功能升级,现在还不好说,但它会集成微软的Copilot,它很容易让人想到多年前的“曲别针”助手,但这次是AI技术加持的,Co…...
别再为查重和 AIGC 检测头秃!okbiye 降重 + 降 AIGC 双功能,论文安全过审的最后一道防线
okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT降重复率 - Okbiye智能写作https://www.okbiye.com/reduceAIGC 一、前言:论文提交前,你最怕的两个 “隐形杀手” 论文写到定稿,才发现重复率超标、AIGC 检测不过&am…...
数据库局部变量,全局变量,流程控制
前言知识点什么时候用?局部变量调试脚本、存储过程参数、临时存值全局变量获取执行状态、错误处理IF/WHILE条件判断、批量数据处理视图简化复杂查询、统一查询逻辑索引加快查询速度函数封装可复用的计算逻辑存储过程封装复杂业务、批量操作一SQL局部变量变量1.是什么…...
2026 年招聘效率升级:高匹配候选人推荐的 AI 实践路径
招聘的核心目标是快速找到适配岗位的人才,而简历筛选与候选人推荐是决定招聘效率的关键环节。传统招聘模式下,HR 需手动比对简历与岗位要求,不仅耗时久,还易因主观判断遗漏高匹配候选人。随着 AI 技术在人力资源领域的深度应用&am…...
KMS_VL_ALL_AIO终极指南:三步永久激活Windows和Office系统
KMS_VL_ALL_AIO终极指南:三步永久激活Windows和Office系统 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然变…...
大学生证书分为哪几种?2026年最新含金量排名与考证避坑指南
嗨,各位正在象牙塔里奋斗或者即将步入社会的同学们!👋转眼间我们已经迈入了2026年,就业市场的风向标其实每天都在发生细微的变化。我特别能理解大家现在的焦虑感——看着周围的同学都在疯狂刷题考证,自己如果不考点什么…...
全栈开发的核心技能:掌握这4个技术,成为全栈工程师
对于很多深耕测试领域多年的软件测试从业者来说,“转全栈开发”早已不是一个陌生的方向——无论是为了突破职业瓶颈,还是为了打通测试到开发的链路,提升自己的端到端交付能力,抑或是拓展职业选择的边界,全栈工程师都是…...
别再只画图了!深度解读R语言列线图结果:如何从lrm模型输出看懂每个变量的影响大小?
从模型输出到临床洞察:R语言列线图结果深度解析指南 当你第一次看到lrm模型输出的那堆"Effects"和"Odds Ratio"时,是不是感觉像在解读外星文?别担心,这正是从"会画图"到"懂原理"的必经之…...
生产级机器学习模型服务:从Notebook到Kubernetes的工程实践
1. 项目概述:这不是“跑通模型”,而是让模型在真实世界里活下来“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题本身就像一句行话暗号,老手一眼就懂:前面三篇已经蹚过了数据清洗、特征工程、…...
Godot PCK Explorer:可视化浏览与精准定位Godot游戏资源
1. 这不是“解包工具”,而是Godot游戏资产的显微镜 你有没有遇到过这种情况:下载了一个开源Godot游戏,想看看它的UI是怎么做的,动画资源放哪儿,或者想复用某个粒子特效——结果打开文件夹只看到一个几百MB的 game.pc…...
知识产权管理中的流程自动化:从人工操作到系统智能
企业知识产权部门日常工作中,最耗费时间的往往不是策略制定,而是重复性的事务处理:收到官方来文后手动解压、分类、重命名、上传到对应案件;收到审查意见后人工计算答复期限并设置提醒;案件状态变化后逐个更新Excel记录…...
