IBM的Java诊断,第3部分 - 编程入门网
参见表 2),从红色 (100%) 逐渐过渡到黄色 (50%),并且最终变为绿色 (0%)。红色条表示每次请求监视程序时线程都会阻塞 ,而绿色条表示线程从不阻塞。对图进行快速扫描将显示执行得不太好的那些监视程序。
表 2 解释报告表中各列值的说明: 表 2. 报告表图例
运行中的 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |