🌱
274
一杯咖啡的时间,聊聊技术与成长
咖啡养成
连载中 8/20
经典收集器:吞吐量与停顿时间的第一次分家
Parallel 追求单位时间产量最高,CMS 追求单次停顿最短——两条路线各有代价。CMS 的四阶段并发设计很优雅,碎片与并发失败的坑也为 G1 铺了路。
咖啡养成
连载中 7/20
回收算法:清除、复制与整理的三难选择
没有完美的回收算法,只有取舍:清除省空间留碎片,复制无碎片但费内存,整理两头顾却更慢。分代收集把三种算法按对象寿命各就各位。
咖啡养成
连载中 6/20
垃圾标记:可达性分析与四种引用的分工
引用计数过不了循环引用这一关,JVM 选择了从 GC Roots 往下摸——但摸到的就都能活吗?强软弱虚四种引用各守一岗,ThreadLocal 的内存泄漏就藏在弱引用里。
咖啡养成
连载中 5/20
双亲委派:为什么类加载器要讲究先来后到
同一个 Class 文件被两个加载器加载,JVM 会当成两个不同的类——这不是 bug 是设计。三层加载器、先问爹再自己干的模型,以及那些故意打破规则的场景。
咖啡养成
连载中 4/20
类加载机制:Class 文件是怎么变成可用对象的
加载、验证、准备、解析、初始化五步各司其职——静态变量的坑大多出在"准备"和"初始化"的顺序差上。六种主动引用、一次 clinit 的线程安全,都在这篇。
咖啡养成
连载中 3/20
对象的一生:从 new 一句到被回收
new Object() 这一行背后有五道工序,对象头里藏着分代年龄与锁标志,内存布局里藏着 8 字节对齐。对象怎么生、长什么样、怎么被访问,这篇讲透。
咖啡养成
连载中 2/20
运行时数据区:堆、栈、方法区到底怎么分
StackOverflowError 和 OutOfMemoryError 天天见,但一个在栈、一个在堆——线程私有的三块和全局共享的两块,一张地图把 JVM 的地皮划分讲清楚。
咖啡养成
连载中 1/20
为什么 Java 工程师绕不开 JVM:从一次线上 OOM 说起
周日早上七点的 OOM 告警,重启后三天又来——不认识 JVM 的工程师,只能永远在重启大法里轮回。内存怎么分、垃圾怎么收、问题怎么查,这个系列把 JVM 从黑盒讲成工具箱。
咖啡养成
写给后端的 Vite 配置指南:从懵到懂
每次前端构建出问题就 copy Stack Overflow?这篇用后端工程师能听懂的语言,拆解 Vite 的依赖预构建、HMR 和打包优化。