<span class=“js_title_inner“>为什么 Java 还要发生 STW (时间暂停)?</span> 📅 发布时间:2026/7/11 18:27:33 👁️ 浏览次数: 关注我们,设为星标,每天7:30不见不散,每日java干货分享如果你问一个 C 程序员“你最羡慕 Java 程序员什么”他大概率会说“羡慕他们不用手动写delete或者free。”在 Java 的世界里内存管理是自动的。你只管new对象用完随手一扔JVM 会派出一个默默无闻的保洁员 (GC 线程)帮你擦屁股回收内存。但是这个保洁员有时很笨有时很暴躁。如果不了解他的脾气你的系统就会莫名其妙地卡顿STW甚至直接崩溃OOM。 一、技术分析怎么判断谁是垃圾1. 引用计数法 vs 可达性分析•引用计数 (Reference Counting): 对象头里记个数谁引用我我就 1没人理我我就归零死。• Bug: A 引用 BB 引用 A两人互相抱团计数器永远是 1永远死不掉循环引用。Java 不用这个。•可达性分析 (Reachability Analysis):Java 用的这个。• 从一堆**“根对象” (GC Roots)** 出发比如 main 方法里的变量、静态变量。• 顺藤摸瓜只要能摸到的对象就是活的。• 摸不到的就是垃圾准备回收。2. 垃圾回收三板斧 (算法)•标记-清除 (Mark-Sweep):• 先把垃圾标出来然后直接清除。• 缺点: 内存会变成“蜂窝煤”到处是碎片。想放个大对象都放不下。•复制算法 (Copying):• 把内存分两半。只用一半。满了就把活着的复制到另一半把这一半全部清空。• 优点: 没碎片速度快。• 缺点: 浪费一半内存。(新生代最爱用这个)。•标记-整理 (Mark-Compact):• 把活对象都往一端推然后把边界以外的全部砍掉。• 优点: 没碎片不浪费空间。• 缺点: 移动对象很累。(老年代爱用这个)。️ 二、故事场景自助餐厅的保洁员为了搞懂最复杂的“分代收集理论”我们将Java 堆内存 (Heap)比作一家火爆的自助餐厅。这里的规则是大部分客人吃完就走朝生夕死只有少部分客人会赖着不走长期存活。1. 区域划分•Eden 区 (大厅): 所有新进来的客人新对象都先安排在大厅吃饭。•Survivor 区 (休息区): 分为 S0 和 S1 两块。给那些还没吃完、但需要腾地方的客人临时坐坐。•Old 区 (VIP 包厢): 给那些吃了几小时还不走的“老赖”客人。2. Minor GC (清理大厅) —— 发生得非常频繁•场景: 大厅 (Eden) 坐满了新客人进不来了。•动作: 保洁员冲进大厅。• 大部分人吃完了垃圾直接收盘子赶人。• 少部分人没吃完活对象保洁员把他们请到休息区 S0。•清空大厅: 现在大厅又是空的了可以接新客了。•算法: 这里用的是复制算法。因为活下来的人少复制成本低。3. 年龄增长 (晋升 VIP)•规则: 客人每在休息区 (S0/S1) 熬过一次清理年龄 1。•晋升: 当一个客人熬过了15 次清理默认值保洁员会说“大哥您是老顾客了请进VIP 包厢 (Old 区)慢慢吃别在大厅挤了。”4. Full GC / Major GC (全场大扫除) —— 尽量避免•场景: VIP 包厢 (Old 区) 也塞满了。•动作: 保洁员不仅要扫大厅还要进包厢一个个查“你吃完没你吃完没”•后果: 这非常慢而且为了彻底打扫保洁员会按下**“时间暂停键”**。5. STW (Stop The World) —— 时间暂停这是 GC 最可怕的地方。为了防止保洁员在扫地时客人又乱扔垃圾JVM 会强行停止所有用户线程。•现象: 你的网页突然卡死 1 秒然后又恢复了。这就是发生了 STW。•目标: 所有的 JVM 调优目的只有一个尽量减少 STW 的时间。 三、总结垃圾回收器的进化史为了减少那个讨厌的 STW垃圾回收器进化了好几代1.Serial: 单线程保洁员。扫地时全场暂停。适合小餐厅。2.Parallel: 多线程保洁员。好几个保洁员一起扫扫得快一点但还是全场暂停。3.CMS (Concurrent Mark Sweep): 边吃饭边扫地。保洁员尽量不打扰客人吃饭只有在关键时刻暂停一下。4.G1 (Garbage First):现代主流。它不分大厅包厢了而是把餐厅切成几百个小格子。哪里垃圾多优先扫哪里。一句话总结GC 就是在“空间利用率”和“停顿时间”之间做平衡的艺术。推荐阅读 点击标题可跳转50个Java代码示例全面掌握Lambda表达式与Stream API16 个 Java 代码“痛点”大改造“一般写法” VS “高级写法”终极对决看完代码质量飙升为什么高级 Java 开发工程师喜爱用策略模式精选Java代码片段覆盖10个常见编程场景的更优写法提升Java代码可靠性5个异常处理最佳实践为什么大佬的代码中几乎看不到 if-else因为他们都用这个...还在 Service 里疯狂注入其他 Service你早就该用 Spring 的事件机制了看完本文有收获请转发分享给更多人关注「java干货」加星标提升java技能❤️给个「推荐 」是最大的支持❤️.cls-1{fill:#001e36;}.cls-2{fill:#31a8ff;}.cls-1{fill:#001e36;}.cls-2{fill:#31a8ff;}.cls-1{fill:#001e36;}.cls-2{fill:#31a8ff;}.cls-1{fill:#001e36;}.cls-2{fill:#31a8ff;}
【值得收藏】AI大模型赋能企业数字化转型:办公、人力、财务等多场景应用详解 本文详细介绍了AI大模型(Deepseek)在企业六大领域的智能化应用,包括办公系统、人力资源、财务管理、行政管理、项目管理和客户资源管理。从流程自动化、智能审批到数据分析、风险预警,AI技术正在重塑企业运营模式。文章通过具体场景展示了AI如何提升效率… 2026/7/11 6:51:12
<span class=“js_title_inner“>线上事故:为什么用户输入 `Abc` 却登录了 `abc` 的账号?</span> 关注我们,设为星标,每天7:30不见不散,每日java干货分享 案发场景:你的团队开发了一个短链接系统(Short URL)。核心逻辑是生成 6 位随机字符作为 ID,区分大小写(Base62 编码),以扩大 ID 容量。灵… 2026/7/8 22:23:06
惊!IF持续下跌,中科院1区Top或将降为2区 🔥 🔥 🔥 🔥 《IEEE Transactions on Neural Networks and Learning Systems》由IEEE计算智能学会于 1990 年创刊,在神经网络、机器学习、深度学习及相关交叉领域享有极高的学术声誉和影响力。 值得注意的是&a… 2026/5/17 1:54:34
虚幻引擎UI开发:NiagaraUIRenderer插件实战指南与性能优化 1. 项目概述与核心价值在虚幻引擎的UI开发中,我们常常会遇到一个瓶颈:如何将那些酷炫的、动态的Niagara粒子特效无缝地集成到用户界面里?传统的做法,比如把粒子系统渲染到Render Target再贴到UI材质上,不仅流程繁琐、性… 2026/7/11 18:26:56
华为与思科 STP 安全对比:BPDU Guard vs BPDU Protection 的 2 点核心差异 华为与思科STP安全机制深度对比:BPDU防护的实战差异解析1. 边缘端口保护机制的本质差异在网络工程实践中,边缘端口的安全防护是生成树协议(STP)部署中的关键环节。华为的stp bpdu-protection与思科的spanning-tree bpduguard虽然目… 2026/7/11 18:24:56
如何快速上手幻兽帕鲁存档编辑工具:5分钟掌握核心技巧 如何快速上手幻兽帕鲁存档编辑工具:5分钟掌握核心技巧 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 幻兽帕鲁存档编辑工具palworld-… 2026/7/11 18:24:56
九大网盘文件直链下载终极方案:开源工具LinkSwift深度体验指南 九大网盘文件直链下载终极方案:开源工具LinkSwift深度体验指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘… 2026/7/11 18:24:56
5步精通PDF补丁丁:从文档混乱到专业管理的完整指南 5步精通PDF补丁丁:从文档混乱到专业管理的完整指南 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitco… 2026/7/11 18:22:55
线性变换与相似矩阵不是矩阵等价变形,是同一套主干螺旋变换更换不同观测基底的两种记录形式 -《全域数学vs传统数学:人类文明进阶200讲》第75讲 作者 :乖乖数学 《全域数学vs传统数学:人类文明进阶200讲》第75讲 讲次 :第75讲主题 :线性变换与相似矩阵不是矩阵等价变形,是同一套主干螺旋变换更换不同观测基底的两种记录形式对标课本知识点 :相似矩阵、… 2026/7/11 18:22:55
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/11 14:53:30
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/11 12:30:52
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/11 15:29:59