🌱

274

一杯咖啡的时间,聊聊技术与成长

连载中 17/20

JVM 调优:先分清是谁的锅,再谈动参数

九成"JVM 需要调优"的场景,根因在代码或架构——缓存缺失让 GC 频繁,池子乱配让线程暴涨。参数是最后一步,思路比数值重要:目标先行、日志说话、一次只动一个旋钮。

#JVM调优#G1参数#生产模板#压测对比#调优误区
2026-09-19 · 4 阅读 · 0 评论 · 0 赞
连载中 16/20

内存泄漏实战:一次每周涨 100M 的慢泄漏排查

快泄漏当场 OOM,慢泄漏每周涨一点——监控曲线上"锯齿底部不断抬高"就是它的签名。静态集合、ThreadLocal、监听器,三大窝点挨个查。

#内存泄漏#慢泄漏#MAT对比#ThreadLocal#静态集合
2026-09-18 · 5 阅读 · 0 评论 · 0 赞
连载中 15/20

CPU 飙高排查:从 top 到火焰图的完整路径

CPU 100% 不一定是业务忙——死循环、GC 抢核、锁自旋、正则灾难,四种根因各有排查路径。一条完整流程把"哪个线程在哪个方法烧 CPU"挖到底。

#CPU排查#top#火焰图#async-profiler#正则灾难
2026-09-18 · 3 阅读 · 0 评论 · 0 赞
连载中 14/20

OOM 地图:七种 OutOfMemoryError 各从哪里来

OOM 不只是堆满——元空间溢出、直接内存耗尽、GC 开销超限、栈深度炸穿,各有各的报错信息与出生地。一张地图把七种 OOM 归位。

#OutOfMemoryError#Metaspace#DirectBuffer#GC overhead#线程数限制
2026-09-17 · 3 阅读 · 0 评论 · 0 赞
连载中 13/20

MAT 实战:从堆转储找出泄漏元凶

堆转储拿到手,光看对象大小不够——浅堆与深堆的区别,才是定位泄漏的关键。Dominator Tree 和 Path to GC Roots,两板斧把"谁拴住了谁"摸清楚。

#MAT#堆转储分析#浅堆深堆#Dominator Tree#内存泄漏排查
2026-09-17 · 4 阅读 · 0 评论 · 0 赞
连载中 12/20

排查四件套:jstack、jmap、jstat、jcmd 的实战分工

jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。

#jstack#jmap#jstat#jcmd#排查工具
2026-09-16 · 4 阅读 · 0 评论 · 0 赞
连载中 11/20

GC 日志:把回收过程翻译成人话

一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。

#GC日志#Xlog#日志分析#GC监控#Full GC排查
2026-09-16 · 7 阅读 · 0 评论 · 0 赞
连载中 10/20

ZGC:亚毫秒停顿是怎么炼成的

百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。

#ZGC#着色指针#读屏障#亚毫秒停顿#分代ZGC
2026-09-15 · 6 阅读 · 0 评论 · 0 赞
连载中 9/20

G1:把堆切成 Region 之后发生了什么

G1 不再物理分代,而是把堆划成两千多个 Region,谁垃圾多先收谁——停顿时间第一次变成可设置的参数。RSet 与混合回收,是理解 G1 的两把钥匙。

#G1收集器#Region#RSet#MixedGC#停顿模型
2026-09-15 · 4 阅读 · 0 评论 · 0 赞