Posts
All the articles I've posted.
-
happens-before规则详解:JMM的8条核心约束
JMM 的 8 条 happens-before 规则定义了多线程下变量修改的可见性保证,是理解 volatile、锁、并发工具的前提。
-
OOM类型全景排查——从heap到direct memory的四种溢出路径
四种 OOM 全景排查:堆 OOM 用 MAT 支配树找泄漏源、元空间查 ClassLoader、栈溢出看递归、直接内存手动 cleaner 释放
-
JVM运行时数据区——每个字节码在哪里执行?
JVM 运行时区分为线程共享的堆与元空间、线程私有的虚拟机栈与 PC 寄存器,不同 OOM 类型精确对应各自所属内存区域。
-
JVM三色标记与漏标问题
三色标记中漏标的充要条件是黑色对象新增白引用且灰色到白引用被删,CMS 用写后屏障增量更新,G1 用写前屏障 SATB 保留快照。
-
JVM指针压缩:32位地址访问32GB堆的魔法
利用对象 8 字节对齐低 3 位恒零,将 64 位地址右移 3 位压缩为 32 位存储,解码时左移恢复,4 字节指针寻址 32GB 堆。
-
JVM对象创建与生命周期:从new指令到GC回收
new 指令触发类加载检查、TLAB 无锁分配、零值初始化、设置 Mark Word 与 Klass Pointer 对象头,经历 Eden→Survivor→Old 三代晋升至 GC 回收。
-
JVM ShenandoahGC:Brooks Pointer与并发转移
Shenandoah 用对象头前 Brooks 转发指针实现并发转移,应用线程每次读引用经过转发指针跳转,CAS 更新实现转移与访问的原子同步。
-
JVM Epsilon回收器:什么也不做的GC
Epsilon GC 只分配不回收,消除 GC 变量后可用于 JMH 基准测试、测量 GC 真实开销、通过二分 OOM 边界确定应用精确内存需求。