【问题标题】:How to track locking events in JVMTI如何在 JVMTI 中跟踪锁定事件
【发布时间】:2011-06-22 12:27:38
【问题描述】:

JVMTI 提供事件ContendedMonitorEnterContendedMonitorEntered 来检测与使用synchronized 相关的事件。 synchronized 只不过是一个可重入锁。

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

还有其他方法可以跟踪吗?

【问题讨论】:

    标签: java jvmti


    【解决方案1】:

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

    【讨论】:

    • 但是对于更有趣的检测来说,使用像 ASM 这样的检测库似乎更有用,不是吗?
    • ASM 将使检测更容易。
    • 所以这基本上会强制你使用 Java 代理,不是吗?
    • 不,不会。我想说 ASM 可能比 JVMTI 更适合静态检测,因为它更易于使用。
    • 是的,但是 ASM 是通过 java 代理使用的,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多