首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测量线程锁定监视器的时间

测量线程锁定监视器的时间
EN

Stack Overflow用户
提问于 2013-06-04 21:47:25
回答 2查看 2.2K关注 0票数 3

我有一个信号量上的锁争用,我想测量锁被保留的时间。

有没有一些免费的工具来测量这些东西?

我尝试过Visual VM,我看到了锁争用,但我更感兴趣的是时间。

谢谢你的建议。

我大概有50个这样的

代码语言:javascript
复制
"[ACTIVE] ExecuteThread: '226' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x00000001099fa000 nid=0x41e waiting for monitor entry [0xfffffffe5a8f9000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:292)
    - waiting to lock <0xfffffffeb063ebb0> (a weblogic.utils.classloaders.GenericClassLoader)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:176)
    at com.thoughtworks.xstream.core.util.CompositeClassLoader.loadClass(CompositeClassLoader.java:69)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at com.thoughtworks.xstream.XStream.dynamicallyRegisterConverter(XStream.java:723)
    at com.thoughtworks.xstream.XStream.setupConverters(XStream.java:696)
    at com.thoughtworks.xstream.XStream.<init>(XStream.java:445)
    at com.thoughtworks.xstream.XStream.<init>(XStream.java:385)
    at com.thoughtworks.xstream.XStream.<init>(XStream.java:342)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-05 06:33:48

您可以使用Sun Studio Performance Analyzer并启用锁分析。这将显示您在锁中花费的时间。

jProfiler也有线程/监控统计标签,所以你可以试一试。

另一种方法是通过以给定间隔对线程转储进行采样并手动计算来获得估计值。

还有另一种方法是打印安全点统计 (+XX:PrintSafePointStatistics),这也打印出“线程阻塞的时间以毫秒为单位”,详细信息请参阅JVM SafePointStatistics - Can anyone help interpret it

票数 5
EN

Stack Overflow用户

发布于 2013-06-04 21:55:47

我认为您可以在调用super.acquire()之前和之后扩展信号量、覆盖获取和记录必要的信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16919588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档