splinter 是一个 JVM 分析工具包,允许用户在运行时查看类、方法、字段、常量池和字节码。该工具在 OpenJDK 构建 22.0.2+9-70 上开发和测试。
通常,当你想到 JVM 的分析工具包时,你会认为它使用 JNI 或 JVMTI,但 splinter 不是!
splinter 实际上是外部工具,目前具备以下能力:
Method 和 ConstMethod 实时解码字节码其长期目标是成为运行时 JVM 分析工具包,用于:

当前的代码库仍处于基础阶段,但已能正常运行。
在撰写本文时(2026年3月11日),splinter 可以:
javaw.exe 进程jvm.dlljvm.dll 中解析 HotSpot 导出的 VMStruct 表ClassLoaderDataGraph 列出已加载的类Klass 和 InstanceKlassInstanceKlass::_fieldinfo_stream 解码 HotSpot 字段流Method / ConstMethodsplinter 最酷的部分之一是它不使用类文件格式的字节码,而是实际使用来自 HotSpot 解释器的运行时字节码指令,这些指令随后以符号类/方法/字段引用的形式回读给你。
这很重要,因为 HotSpot 实际上倾向于在运行时重写某些指令。我们当前正在处理:
invokedynamic 编码索引fast_iaccess_0fast_igetfieldfast_aldcinvokehandle