🌱
274
一杯咖啡的时间,聊聊技术与成长
咖啡养成
连载中 17/20
JVM 调优:先分清是谁的锅,再谈动参数
九成"JVM 需要调优"的场景,根因在代码或架构——缓存缺失让 GC 频繁,池子乱配让线程暴涨。参数是最后一步,思路比数值重要:目标先行、日志说话、一次只动一个旋钮。
咖啡养成
连载中 16/20
内存泄漏实战:一次每周涨 100M 的慢泄漏排查
快泄漏当场 OOM,慢泄漏每周涨一点——监控曲线上"锯齿底部不断抬高"就是它的签名。静态集合、ThreadLocal、监听器,三大窝点挨个查。
咖啡养成
连载中 15/20
CPU 飙高排查:从 top 到火焰图的完整路径
CPU 100% 不一定是业务忙——死循环、GC 抢核、锁自旋、正则灾难,四种根因各有排查路径。一条完整流程把"哪个线程在哪个方法烧 CPU"挖到底。
咖啡养成
连载中 14/20
OOM 地图:七种 OutOfMemoryError 各从哪里来
OOM 不只是堆满——元空间溢出、直接内存耗尽、GC 开销超限、栈深度炸穿,各有各的报错信息与出生地。一张地图把七种 OOM 归位。
咖啡养成
连载中 13/20
MAT 实战:从堆转储找出泄漏元凶
堆转储拿到手,光看对象大小不够——浅堆与深堆的区别,才是定位泄漏的关键。Dominator Tree 和 Path to GC Roots,两板斧把"谁拴住了谁"摸清楚。
咖啡养成
连载中 12/20
排查四件套:jstack、jmap、jstat、jcmd 的实战分工
jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。
咖啡养成
连载中 11/20
GC 日志:把回收过程翻译成人话
一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。
咖啡养成
连载中 10/20
ZGC:亚毫秒停顿是怎么炼成的
百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。
咖啡养成
连载中 9/20
G1:把堆切成 Region 之后发生了什么
G1 不再物理分代,而是把堆划成两千多个 Region,谁垃圾多先收谁——停顿时间第一次变成可设置的参数。RSet 与混合回收,是理解 G1 的两把钥匙。