接手 MES 系统的第一周就被一个问题教育了:这套系统是模型驱动的——页面、接口、校验规则全部由各模块的模型 XML 声明,启动时统一注册进内存容器。改一行 XML 想看效果?重启整个后端,喝完一杯水回来还没好。而所谓”改模型”恰恰是日常开发里最高频的动作。
于是写了一个两三百行的 Java Agent:改完 XML、mvn compile 落盘,运行中的 JVM 两秒内自动重载新模型,不用重启。这个项目体量很小,但把 Java Agent、Attach API、ClassLoader、NIO 文件监听这几块面试高频知识全部串了一遍。这篇文章拆解它的机制与原理,每部分附上对应的面试考点,文末还附一版按真实追问链演练的模拟面试——这个小项目完全可以当 JVM 方向的自我介绍弹药库。