java - 测量特定监视器上的线程争用

标签 java multithreading jvm jconsole jvisualvm

我正在考虑从 synchronized 切换到 ReadWriteLock。在这样做之前,我想检查一下它是否值得。

ThreadMXBeanThreadInfo 提供有关总体线程阻塞计数和时间的信息。这些 block 可能是由多个监视器引起的。有没有一种方法可以测量给定特定监视器对象的 block 统计信息?

最佳答案

是的,可以使用 JVMTI .

您需要编写一个本地代理来处理一对事件:

这两个事件都接受 jthreadjobject 参数,它们对应于获取监视器的线程和监视器对象本身。


Here is竞争分析器代理的示例代码。

关于java - 测量特定监视器上的线程争用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38208487/

相关文章:

java - Android:线程完成后使用 setContentView()

java - 使用 FK 作为过滤器在 Java 上创建查询

c++ - 将 2 个指针传递给 2 个线程,但它们最终共享相同的

c - 将参数传递给 pthread_create - 从 void(*)() 到 void(*)(void*) 的无效转换

java - 如何解释导致 OutOfMemoryError 的 G1 GC 日志?

java - 如何演示所有 TCP 套接字状态

java - 是否可以将图例添加到 JFreeChart 的绘图中?

Java Async Sockets 多线程性能

java - 模拟 RCP 应用程序的 jar 文件。哪些因素可能会导致其出错?

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本