快速业务通道

IBM的Java诊断,第3部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
参见表 2),从红色 (100%) 逐渐过渡到黄色 (50%),并且最终变为绿色 (0%)。红色条表示每次请求监视程序时线程都会阻塞 ,而绿色条表示线程从不阻塞。对图进行快速扫描将显示执行得不太好的那些监视程序。

表 2 解释报告表中各列值的说明:

表 2. 报告表图例

列名 说明
%MISS 当请求的线程被阻塞以等待监视程序时总 gets(获取)的百分比。
GETS 成功获取的总数。
NONREC 非递归获取的总数。该数包括 SLOW gets。
SLOW 非递归获取(导致阻塞请求线程以等待释放监视程序)的总数。NONREC 中包含该数。
REC 递归获取的总数。递归获取表示请求的线程已经拥有监视程序 。
TIER2 支持三层自旋锁的平台上,层 2(内部自旋循环)迭代的总数。
TIER3 支持三层自旋锁的平台上,层 3(外部线程让步循环)迭代的总数。
%UTIL 监视程序持有时间除以时间间隔。必须打开持有时间计数。
AVER_HTM 监视程序的平均持有时间;不包括递归获取,因为递归获取时已经拥有监视程序。
MONITOR NAME 监视程序名称,如果不知道名称,则为 NULL(空白)。

运行中的 JLA

一个简单的应用程序示例将帮助您了解如何使用 JLA 帮助查找锁争用的区域。假设一个应用程序由两 个线程组成,而这两个线程都尝试访问同一个对象。本例中,该对象就是一个名为 JLAsink 的类,该类 包含两个同步的方法,一个用于设置数据块,一个用于检索该数据块。这两个线程同时开始并且都在一个 循环中运行以同时访问 JLAsink。一个线程称为 setter 方法,另一个线程称为 retrieval 方法。

图 3 显示在性能较差的示例应用程序中运行 JLA 的结果:

图 3. 最初的 JLA 快照

可以从此屏幕截图中看到,JLAsink 监视程序进行了 9,161 次 get,并且请求线程被阻塞,阻止它获 得 25% 的锁时间。很明显,当处理尝试获得锁的线程时,应用程序的这部分性能将有所下降。

IBM的Java诊断,第3部分(5)

时间:2011-11-02 IBM Toby Corbin

图 4 显示在更高效的示例应用程序中运行的 JLA:

图 4. 在优化的应用程序中运行 JLA 的快照

您可以看出 JLAsink 监视程序进行了 9,370 次 get,并且没有阻塞任何一个线程。这表明在处理锁 争用时,该监视程序运行得比较理想。现在优化的代码比未优化的代码运行速度更快,您可以通过比较每 次运行的时间间隔看到这一点。 第二次运行访问 JLAsink 对象的次数比第一次运行多,并且它花的时间 较少。

未来计划

随着当前功能的完善,该工具的发展正逐渐稳定。将来,我们的团队将在 JLA 的基础上发布一个新工 具,该工具将超越锁统计信息,提供对活动 Java 应用程序的分析。该工具不仅仅具有 JLA 的功能,而 且还具有 EVTK 和 Dump Analyzer 工具的功能。目前该工具还处于设计阶段。

结束语

在本系列的下一篇文章中,您将回到在本系列的第 1 部分介绍的 Dump Analyzer 工具。 您将对该工 具的扩展性获得更深入的了解,并且还将学习如何构建您自己的分析模块。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号