🌱

345

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

连载中 16/20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#G1收集器#Region#RSet#MixedGC#停顿模型
2026-09-15 · 22 阅读 · 0 评论 · 0 赞
连载中 8/20

经典收集器:吞吐量与停顿时间的第一次分家

Parallel 追求单位时间产量最高,CMS 追求单次停顿最短——两条路线各有代价。CMS 的四阶段并发设计很优雅,碎片与并发失败的坑也为 G1 铺了路。

#CMS收集器#Parallel#吞吐量优先#延迟优先#Concurrent Mode Failure
2026-09-14 · 79 阅读 · 0 评论 · 0 赞