JAVA编程【jvm垃圾回收的差异】
jvm垃圾回收的差异
JVM(Java Virtual Machine)的垃圾回收(GC)机制是自动管理内存的一种方式,能够帮助开发者释放不再使用的内存,避免内存泄漏和溢出等问题。不同的垃圾回收器(GC)有着不同的特点、适用场景以及性能差异。
1. 垃圾回收器分类
JVM垃圾回收器主要分为两大类:
串行垃圾回收器(Serial GC)
并行垃圾回收器(Parallel GC)
并发垃圾回收器(Concurrent GC)
混合垃圾回收器(如:G1 GC)
ZGC 和 Shenandoah GC(低延迟垃圾回收器)
2. 串行垃圾回收器(Serial GC)
串行垃圾回收器是最简单的垃圾回收器,所有的垃圾回收操作都是单线程完成的。
特点:
单线程执行:所有的垃圾回收操作(包括标记、清除、压缩)都由一个线程来完成。
适用于单核机器:在多核机器上可能存在性能瓶颈,因回收过程阻塞应用线程。
低内存占用:由于只使用一个线程,内存占用较小。
GC暂停时间较长:因为所有的回收都由一个线程执行,可能导致应用程序的停顿时间较长。
适用场景:
内存资源较为紧张、硬件性能较差,或者单核环境。
小型应用或者对GC延迟要求不高的场景。
启用方式:
java -XX:+UseSerialGC
3. 并行垃圾回收器(Parallel GC)
并行垃圾回收器通过多个线程来并行地执行垃圾回收过程,减少了垃圾回收的时间,适合多核环境。
特点:
多线程执行:垃圾回收过程中可以使用多个线程,并行执行标记、清理和整理操作。
吞吐量较高:能更好地利用多核CPU资源,适合计算密集型应用。
GC暂停时间较长:虽然多线程执行,但仍然是“停顿式”的,GC时应用线程会被暂停。
适用场景:
计算密集型应用(如批处理任务、大数据处理等)。
硬件资源丰富的服务器上,特别是在多核环境中。
启用方式:
java -XX:+UseParallelGC
4. 并发垃圾回收器(Concurrent Mark-Sweep GC, CMS GC)
CMS(Concurrent Mark-Sweep)垃圾回收器是为了减少垃圾回收的停顿时间而设计的。它在标记和清理阶段尽可能与应用线程并发执行。
特点:
低停顿:通过并发执行垃圾回收,尤其是在标记阶段和清理阶段,减少了应用停顿时间。
并发标记和清理:标记和清理过程与应用线程并行进行,因此GC停顿时间较短。
无法完全消除停顿:由于某些阶段仍然需要停顿(如重标记阶段),停顿时间不能完全消除。
内存碎片问题:由于没有压缩阶段,可能会导致内存碎片的出现。
适用场景:
对延迟敏感的应用(如Web服务器、实时系统)。
对停顿时间要求较高的场景。
启用方式:
java -XX:+UseConcMarkSweepGC
5. G1垃圾回收器(Garbage First GC)
G1(Garbage First)垃圾回收器是为大内存应用而设计的,它将堆划分为多个区域(Region),在垃圾回收时会优先清理回收成本较低的区域,从而减少停顿时间。
特点:
分区回收:将堆划分为多个小区域,每个区域都有不同的回收策略。
低停顿:通过优先回收成本较低的区域,控制每次垃圾回收的停顿时间。
混合回收:G1 采用了类似 CMS 的并发标记和清理,同时也进行并行回收,最后进行清理阶段时也尽可能减少停顿。
可控的停顿时间:通过 -XX:MaxGCPauseMillis 可以设定最大GC停顿时间,G1会尽量保证在这个时间内完成回收。
适用场景:
对响应时间要求较高的大型应用(如大数据系统、金融应用)。
内存较大(如8GB以上)的应用。
启用方式:
java -XX:+UseG1GC
6. ZGC 和 Shenandoah GC(低延迟垃圾回收器)
ZGC(Z Garbage Collector)和Shenandoah GC是两种低延迟垃圾回收器,专门设计用于极低的GC暂停时间,适合对延迟要求非常高的应用。
特点:
低延迟:ZGC 和 Shenandoah 都是为低延迟设计的,暂停时间几乎是常数级别的。
可伸缩性:两者都支持大规模堆(数TB内存),并且能在不中断应用的情况下进行垃圾回收。
并发标记和清理:标记、压缩等工作几乎都在应用线程运行时并发执行。
适用场景:
超低延迟要求的应用(如实时交易系统、在线支付系统)。
高可用、高并发的大型分布式应用。
启用方式:
java -XX:+UseZGC
java -XX:+UseShenandoahGC
7. JVM 垃圾回收器的差异总结

8. 选择合适的垃圾回收器
HikariCP 或 Apache DBCP 等性能要求较高的应用通常选择 并行GC 或 G1 GC。
对实时性要求较高的应用,如 金融系统 或 实时处理系统,可以使用 CMS GC、G1 GC 或 低延迟GC(ZGC/Shenandoah)。
内存较小、要求不高的小型应用可以选择 串行GC。
每种垃圾回收器有其特点和适用场景,选择合适的垃圾回收器不仅有助于优化应用性能,还能提高系统的稳定性和可维护性。
相关文章:
JAVA编程【jvm垃圾回收的差异】
jvm垃圾回收的差异 JVM(Java Virtual Machine)的垃圾回收(GC)机制是自动管理内存的一种方式,能够帮助开发者释放不再使用的内存,避免内存泄漏和溢出等问题。不同的垃圾回收器(GC)有…...
Elasticsearch:“Your trial license is expired”
目录标题 问题原因解决方案 问题 原因 ES的X-pack许可证是提供免费一个月的试用,到期之后就会报这个错误。 解决方案 查看license GET _license 开启试用license POST _xpack/license/start_trial?acknowledgetrue修改为基础license POST _xpack/license/start_…...
fmql之Linux WDT
正点原子第52章。 基础知识 正点原子教程 fmql-dts 代码 APP代码(不需要编写驱动代码) static int dw_wdt_drv_probe(struct platform_device *pdev) {struct device *dev &pdev->dev;struct watchdog_device *wdd;struct dw_wdt *dw_wdt; …...
【算法学习之路】7.链表算法
链表算法 前言一.原地逆置思路一:头插法思路二:双指针法思路3:递归 例题:1.头插法2.双指针法3,递归 二.双指针快慢指针:一个指针快一个指针慢例题1例题2 前言 我会将一些常用的算法以及对应的题单给写完&am…...
IDEA Commit 模态提交界面关闭VS开启对比
IDEA Commit 模态提交界面关闭VS开启对比 前言开启模态提交界面优点快捷且灵活的选择需要commit文件显示文件修改内容多(主观) 缺点在模态提交界面选择文件,临时关闭模态框重新打开会重置选择的commit文件 关闭模态提交界面优点允许在commit选择文件时查看其它没有修…...
【AI赋能】AI 工具生成视频教材:从创意到成品的全流程指南
AI 工具生成视频教材:从创意到成品的全流程指南 目标 通过本教材,您将学会如何利用 AI 工具(Grok、Sora、Speechify 和 CapCut)生成一个完整的视频,包括脚本生成、视频片段制作、字幕添加、音频生成以及最终剪辑合成…...
qt 操作多个sqlite文件
qt 操作多个sqlite文件 Chapter1 qt 操作多个sqlite文件1. 引入必要的头文件2. 创建并连接多个SQLite数据库3. 代码说明4. 注意事项 Chapter2 qt 多线程操作sqlite多文件1. 引入必要的头文件2. 创建数据库操作的工作线程类3. 在主线程中创建并启动多个工作线程4. 代码说明5. 运…...
WSL with NVIDIA Container Toolkit
一、wsl 下安装 docker 会提示安装 docekr 桌面版,所以直接安装 docker 桌面版本即可 二、安装 NVIDIA Container Toolkit NVIDIA Container Toolkit仓库 https://github.com/NVIDIA/nvidia-container-toolkitgithub.com/NVIDIA/nvidia-container-toolkit 安装…...
Vue 系列之:组件通讯
子组件调用父组件方法 1、直接在子组件中通过 this.$parent.event 来调用父组件的方法 父组件: <template><p><child></child></p> </template> <script>import child from ./child;export default {components: {chi…...
【Linux实践系列】:用c语言实现一个shell外壳程序
🔥本文专栏:Linux Linux实践项目 🌸博主主页:努力努力再努力wz 那么今天我们就要进入Linux的实践环节,那么我们之前学习了进程控制相关的几个知识点,比如进程的终止以及进程的等待和进程的替换,…...
STL map 的 lower_bound(x)、upper_bound(x) 等常用函数
【STL map 简介】 ● STL map 是一种关联容器,存储键值对,每个键(key value)是唯一的,而值(mapped value)可以重复。构建 STL map 时,无论元素插入顺序如何,STL map 中的…...
【A2DP】SBC 编解码器互操作性要求详解
目录 一、SBC编解码器互操作性概述 二、编解码器特定信息元素(Codec Specific Information Elements) 2.1 采样频率(Sampling Frequency) 2.2 声道模式(Channel Mode) 2.3 块长度(Block Length) 2.4 子带数量(Subbands) 2.5 分配方法(Allocation Method) 2…...
Computational Linguistics期刊全解析:领域顶刊的投稿指南与学术价值
在人工智能与语言学交叉融合的浪潮中,《Computational Linguistics》(CL)作为该领域的标杆期刊,始终是研究者发表前沿成果的首选平台。本文将从期刊影响力、投稿策略、收稿方向等角度,为学者提供一份全面的指南。 一、…...
【量化科普】Sharpe Ratio,夏普比率
【量化科普】Sharpe Ratio,夏普比率 🚀量化软件开通 🚀量化实战教程 在量化投资领域,夏普比率(Sharpe Ratio)是一个非常重要的风险调整后收益指标。它由诺贝尔经济学奖得主威廉F夏普(William…...
运行OpenManus项目(使用Conda)
部署本项目需要具备一定的基础:Linux基础、需要安装好Anaconda/Miniforge(Python可以不装好,直接新建虚拟环境的时候装好即可),如果不装Anaconda或者Miniforge,只装过Python,需要确保Python是3.…...
TikTok Shop欧洲市场爆发,欧洲TikTok 运营网络专线成运营关键
TikTok在欧洲的影响力还在持续攀升,日前,TikTok发布了最新的欧盟执行和使用数据报告,报告中提到: 2024年7~12月期间,TikTok在欧盟地区的月活用户达1.591亿,较上一报告期(2024年10月发布…...
基于YOLO11深度学习的电瓶车进电梯检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
微服务保护:Sentinel
home | Sentinelhttps://sentinelguard.io/zh-cn/ 微服务保护的方案有很多,比如: 请求限流 线程隔离 服务熔断 服务故障最重要原因,就是并发太高!解决了这个问题,就能避免大部分故障。当然,接口的并发…...
labelimg标注的xml标签转换为yolo格式标签
本文不生产技术,只做技术的搬运工!!! 前言 在yolo训练时,我们需要对图像进行标注,而使用labelimg标注时如果直接选择输出yolo格式的数据集,则原始数据的很多信息无法被保存,因此一版…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
