手写一个简单的 JVM(二):模拟运行 JVM

接上篇,把解析出的字节码放进模拟的运行时数据区:方法区、虚拟机栈、栈帧与局部变量表,实现指令分派并跑通一个 1+2 的加法。

手写一个简单的 JVM(二):模拟运行 JVM

手写一个简单的 JVM(一):解析 Class 文件

从 javap 的输出出发,对照 JVM 规范逐个字段拆解 Class 文件的二进制结构:magic、常量池、访问标记、字段与方法表,并用 Java 代码解析出来。

手写一个简单的 JVM(一):解析 Class 文件

服务器 CPU 居高不下:一次 Dump 排查历程

集群扩容也压不下去的 CPU,问题不在优化而在定位。用 Dump + WinDbg 从 CLR 垃圾回收和大对象分配入手,最终找到字符串拼接引发的 GC 风暴。

服务器 CPU 居高不下:一次 Dump 排查历程

字符编码探密:ASCII、UTF-8、GBK 与 Unicode

从 ASCII 只能用 7 位表示字符讲起,串起汉字编码、GBK 的区位码设计、Unicode 的诞生与 UTF-8 变长编码的取舍。

字符编码探密:ASCII、UTF-8、GBK 与 Unicode