如何在JVMTI中跟踪锁定事件



JVMTI提供事件ContendedMonitorEnterContendedMonitorEntered来检测与使用synchronized相关的事件。synchronized只是一个ReentrantLock。

现在我还想跟踪与锁结构相关的事件:ReentrantLock。我可以挂接其lock()unlock()事件的方法入口/出口。然而,这些事件挂钩没有提供任何关于它们被调用对象的信息。因此,我无法区分不同的ReentrantLock,因此无法记录任何关于当前锁定的锁的信息。

有其他方法可以跟踪这件事吗?

您必须自己对正在加载的类进行检测。这相当复杂,但幸运的是,我们有java_crw_demo.c,它与JDK一起提供(以及其他有用的示例)。在那里,您可以找到一个执行一些基本类型的插入的实现。你可以很容易地修改它来完成这项工作。我现在这样做是为了一些学术学生项目。

最新更新