GraalVM 不能直接支持 Java Agent 主要有两个根本原因。第一,Java Agent 依赖 JVM 的 premain 机制:要求 JVM 在主函数运行之前调用各个 agent 的 premain 函数完成类变换注册等动作。但 GraalVM 的运行时并未设计该机制,agent 没有被调用的机会。第二,Java Agent 通过修改字节码改变运行时行为(基于 ASM 或 JDK24 的 Class-File API),而 GraalVM 编译为 native 应用后已不再保留字节码,失去了可以修改的目标,native 应用本身也不支持动态修改。这两点缺失导致 GraalVM 长期无法接入可观测平台。




