我正在研究JVM中确定性故障再现的研究项目,并努力使不同应用程序运行之间的类加载确定性。我的意思是,我想确保始终相同的线程加载一个在上一次运行中加载它的类。
假设我在第一次运行中记录了哪个线程加载了一个给定的类(这是简单的部分)并在某处存储了该信息。然后,我想要控制在任何后续应用程序运行中没有其他线程会加载该类(例如,在它们导致加载类事件之前暂停它们)。
虽然我通过字节码修改或JVMTI设法做的大部分事情我不知道如何解决这个问题,因为加载是由JVM控制的,显然没有字节代码说before load class
,既不是正确的JVMTI事件。
我对任何建议持开放态度,无论多么“怪异”。所以即使使用非公共JVM内部也没问题; C / C ++或Java。不知道在哪里挂钩。