首页 > 解决方案 > 确定性类加载 - 加载类的控制线程

问题描述

我正在研究 JVM 中确定性故障再现的研究项目,并且正在努力使不同应用程序运行之间的类加载具有确定性。我的意思是我想确保总是同一个线程加载一个在以前的运行中加载它的类。

假设我在第一次运行时记录了哪个线程加载了给定的类(这是最简单的部分)并将该信息存储在某处。然后我想控制没有其他线程将在任何后续应用程序运行中加载该类(例如,通过在它们导致加载类事件之前停止它们)。

虽然我设法通过字节码修改或 JVMTI 完成了大部分事情,但我不确定如何解决这个问题,因为加载是由 JVM 控制的,而且显然没有字节码说before load class,也不是正确的 JVMTI 事件。

我愿意接受任何建议,无论多么“怪异”。因此,即使使用非公开的 JVM 内部也可以;C/C++ 或 Java。虽然不知道在哪里挂钩。

标签: javajvmjvmticlassloading

解决方案


推荐阅读