JVM垃圾回收(GC)
JVM是什么JVMJava虚拟机本质是运行Java生态的虚拟计算机解决了跨平台问题又通过自动内存管理、编译优化、安全管控等能力让Java具备高效率、运行文档、可扩展性强等特性。一次编写到处运行。屏蔽不同操作系统底层差异Java源码编译为字节码.class文件由JVM在各平台适配执行无需针对不同系统重新编译代码。自动内存管理。将内存划分为对、方法区、虚拟机栈、本地方法栈、程序计数器等然后通过GC垃圾回收算法自动回收无用对象内存避免内存泄漏等。JVM垃圾回收算法1. 标记 - 清除算法Mark-Sweep流程先标记存活对象再清除未标记的垃圾对象。缺点产生大量内存碎片大对象分配易触发 Full GC标记 / 清除效率随对象增多降低。2. 复制算法Copying流程将内存划分为等量两块如 Eden、Survivor每次仅用一块存活对象复制到另一块清空原内存。优点无内存碎片存活对象少时效率高。缺点内存利用率仅 50%存活对象多时复制开销大。适用新生代对象朝生夕灭存活率低。3. 标记 - 整理算法Mark-Compact流程标记存活对象将存活对象向内存一端规整清理边界外垃圾。优点无内存碎片适合存活对象多的场景。缺点整理阶段效率低。适用老年代对象存活率高。4. 分代收集算法商用 JVM 核心核心思想按对象生命周期分代适配不同算法新生代对象存活时间短、存活率低 → 复制算法。老年代对象存活时间长、存活率高 → 标记 - 清除 / 标记 - 整理算法。元空间方法区回收废弃类、常量采用标记 - 清除。JVM垃圾回收器按分代 / 分区、并发能力、适用场景分类核心回收器如下一新生代回收器1. Serial串行回收器单线程 GCGC 时暂停所有用户线程Stop The WorldSTW。简单高效适合客户端、小内存应用。2. ParNew并行回收器Serial 多线程版本多线程并行 GC仍 STW。常用搭配与 CMS 老年代回收器配合使用。3. Parallel Scavenge并行吞吐量回收器多线程并行 GC目标优化吞吐量CPU 执行用户代码时间 / 总时间。支持自适应调节Eden/Survivor 比例、晋升老年代阈值适合后台计算型服务。二老年代回收器1. Serial Old串行老年代Serial 老年代版本单线程 标记 - 整理客户端或 CMS 降级备用。2. Parallel Old并行老年代Parallel Scavenge 老年代版本多线程 标记 - 整理高吞吐量场景首选。3. CMSConcurrent Mark Sweep并发标记清除目标最短 STW 停顿并发回收GC 与用户线程并行。流程初始标记STW→ 并发标记 → 重新标记STW→ 并发清除。缺点内存碎片、CPU 敏感、无法处理浮动垃圾易触发 Full GC。三全代式回收器分区算法无分代强绑定1. G1Garbage-First分区内存管理兼顾吞吐量与停顿可指定最大停顿时间。流程初始标记STW→ 并发标记 → 最终标记STW→ 筛选回收STW。适用大内存服务端JDK 9 默认回收器。2. ZGCZ Garbage Collector超低延迟STW 停顿毫秒级内支持 TB 级堆内存。基于着色指针、读屏障并发全流程几乎无停顿。适用低延迟要求的金融、电商核心服务。3. Shenandoah对标 ZGC超低停顿跨平台支持无堆大小限制。与 ZGC 差异无着色指针用转发指针实现并发整理。

相关新闻

二分查找算法模板

二分查找算法模板

这里推荐一个很方便记忆和使用的二分查找模板,希望对大家有用。 二分查找(Binary Search)是一种高效的有序数组查找算法,通过每次将搜索范围缩小一半来快速定位目标值。其时间复杂度为 O(log n),适用于静态数据或频繁查…

2026/5/17 9:21:54 阅读更多 →
Java动态数组_支持泛型

Java动态数组_支持泛型

上一篇文章是动态数组, 但是只能用在int, 这次修复了部分上次运行潜在的问题, 并更新为支持不同类型的内容进入数组 实现支持泛型的Java动态数组 普通数组虽然优点在于便于通过位置进行取值, 但存在一个明显的缺点, 就是长度一旦创建就无法更改. 一旦数组满了, 就只有再创建一个…

2026/7/3 22:31:23 阅读更多 →
2005-2022年地级市地方政府税收竞争数据

2005-2022年地级市地方政府税收竞争数据

数据简介 地方政府税收竞争是指地方政府间以增强本地区的经济实力、提高本地区相关福利为目的,通过税收手段进行的与其他地区争夺经济资源及税收资源的活动。 地方政府税收竞争主要集中于第二、第三产业,较少涉及零税负或低税负的第一产业。因此,本数据…

2026/5/17 9:21:53 阅读更多 →

最新新闻

Linux 进程管理进阶:kill -9 与 -15 的3种场景选择与僵尸进程清理

Linux 进程管理进阶:kill -9 与 -15 的3种场景选择与僵尸进程清理

Linux 进程管理进阶:kill -9 与 -15 的3种场景选择与僵尸进程清理在Linux系统管理中,进程管理是每个管理员必须掌握的核心技能。当我们需要终止一个进程时,kill命令是最常用的工具之一。然而,不同的终止信号会导致完全不同的结果。…

2026/7/6 23:38:39 阅读更多 →
如何彻底告别系统激活烦恼:KMS_VL_ALL_AIO智能激活脚本完全指南

如何彻底告别系统激活烦恼:KMS_VL_ALL_AIO智能激活脚本完全指南

如何彻底告别系统激活烦恼:KMS_VL_ALL_AIO智能激活脚本完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经因为Windows系统或Office办公软件显示"未激活"而…

2026/7/6 23:38:39 阅读更多 →
C# 运动控制框架多线程实战:3种线程同步原语对比与ManualResetEvent应用

C# 运动控制框架多线程实战:3种线程同步原语对比与ManualResetEvent应用

C# 运动控制框架多线程实战:3种线程同步原语深度对比与ManualResetEvent工程实践引言:工业控制场景下的线程同步挑战在数控机床的G代码执行过程中,当急停按钮被触发时,系统需要在5毫秒内完成所有轴的制动——这个场景完美诠释了工…

2026/7/6 23:36:39 阅读更多 →
UE5 Control Rig 受击响应实战:2个控制器+Fullbody IK 实现8方向动态反馈

UE5 Control Rig 受击响应实战:2个控制器+Fullbody IK 实现8方向动态反馈

UE5 Control Rig 受击响应实战:2个控制器Fullbody IK 实现8方向动态反馈在角色动作游戏中,受击反馈是提升战斗沉浸感的关键要素。传统蒙太奇动画虽然简单直接,但面对360度攻击方向时往往显得生硬呆板。本文将带你用UE5的Control Rig系统&…

2026/7/6 23:34:38 阅读更多 →
偏微分方程数值解避坑指南:有限差分法3大稳定性条件与误差分析

偏微分方程数值解避坑指南:有限差分法3大稳定性条件与误差分析

有限差分法求解偏微分方程的3大稳定性陷阱与Python实战避坑指南1. 问题背景与核心挑战在工程计算与科学模拟中,有限差分法(FDM)因其直观性和易实现性,成为求解偏微分方程(PDE)的主流数值方法之一。然而,当处理一维平流方程这类典型问题时&…

2026/7/6 23:32:36 阅读更多 →
PaddleOCR PP-OCRv6 模型 CPU/GPU 推理对比:3 种环境下的速度与精度实测

PaddleOCR PP-OCRv6 模型 CPU/GPU 推理对比:3 种环境下的速度与精度实测

PaddleOCR PP-OCRv6 全场景性能实测:CPU/GPU/Docker 部署方案深度解析1. 开篇:为什么选择 PP-OCRv6?在数字化转型浪潮中,OCR(光学字符识别)技术已成为企业降本增效的利器。百度飞桨团队推出的 PP-OCRv6 作为…

2026/7/6 23:30:35 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻