JVMTI提供事件ContendedMonitorEnter
和ContendedMonitorEntered
来检测与使用synchronized
相关的事件。 synchronized
不是别的,而是一个ReentrantLock。
现在我想跟踪与锁定结构相关的事件:ReentrantLock
。我可以挂钩其lock()
和unlock()
事件的方法进入/退出。但是,这些事件挂钩不提供有关它们被调用的对象的任何信息。因此,我无法区分不同的ReentrantLock
,因此无法记录有关当前锁定的锁的任何信息。
还有其他方法可以跟踪这个吗?
答案 0 :(得分:0)
您必须自己检查正在加载的类。这相当复杂,但幸运的是我们提供了java_crw_demo.c(与其他有用的示例一起)和JDK一起提供。在那里,您可以找到执行某些基本类型的工具的实现。您可以轻松修改它以完成工作。 我现在正在为一些学术学生项目这样做。