IBM的Java诊断,第3部分 - 编程入门网
IBM的Java诊断,第3部分时间:2011-11-02 IBM Toby Corbin使用面向 Java 的 Lock Analyzer 诊断同步和锁问题 减少锁的争用并提高性能 简介:面向 Java™ 的 IBM® 锁分析器可从 alphaWorks 获得,可对运行中的 Java 应用 程序进行实时锁监视。锁争用会降低应用程序性能,该工具会突出显示发生锁争用的线程。开发人员可以 使用该信息修改其应用程序以减少锁争用,从而提高性能。 本文介绍了面向 Java 的 IBM 锁分析器,介 绍了其构建的基础架构并针对该工具的未来发展方向进行了思考。 当今很多 Java 应用程序都通 过使用线程来利用该语言的功能,从而支持并发编程。很多线程可以共享相同的数据对象,但是如果应用 程序中控制线程的部分设计得不好,则您可能会遇到锁争用问题从而降低性能。 例如,在多线程应用程序中,如果多个线程访问相同的资源进行读写访问, 则可能会出现线程同步问 题。如果一个线程尝试读取某个文件,而另一个线程 对其进行写访问,则可能会损坏数据。为了解决这 个问题,Java 语言允许一个线程获得对对象的专有锁, 从而防止其他任何线程访问它。一旦该线程完成 对该对象的处理之后,便释放该对象,以便 其他线程可以进行访问。但是,如果应用程序没有进行过精 心设计,则这种机制可能会导致更高级别的争用。 如果一个锁正在使用中,而另一个线程尝试获取它,这时会发生锁争用。 如果锁被频繁获得和/或持 有时间较长,则可能会发生更高级别的争用。 更高级别的锁争用(很多线程尝试访问它)将成为系统中 的瓶颈, 因为每个运行的线程将暂停执行,直到它所需的锁变为可用为止, 这样便限制了应用程序的性 能。 使用 JLA 防止出现锁问题 面向 Java 的 IBM 锁分析器 (JLA) 是 alphaWorks 中的新工具,它可以 在运行 IBM 提供的 Java SDK 或 JRE 版本 5.0 或更高版本的的任何平台上运行, 对活动应用程序执行锁分析,以突出显示线程 的活动并且提供对锁争用频率的深入洞察。该视图可以帮助解决锁争用问题以及性能问题。 JLA 一边运行现有的 Java 应用程序,一边收集该应用程序的所有锁信息。记录每个锁及其详细信息 ,如保持的时间、是否争用以及它阻塞线程尝试获得它的时间百分比。该工具由运行时库和前端图形用户 界面组成,前者必须在启动所要监视的应用程序时加载,后者可以显示结果和性能分析。 JLA 设计详细信息 JLA 由以下两个程序包组成: JLAagent。该程序包与平台有关,由特定于平台的库文件和一组打包成 JAR 的 Java 类组成,它提供 与 Java 虚拟机 (JVM) 的连接以收集有关运行的应用程序的锁统计信息。 JLAGui。该程序包是使用 Swing 编写的,它与平台无关,提供图形用户界面。 JLAagent 中的本地库是用 C 编写的并且使用 Java 虚拟机工具界面 ( Java Virtual Machine Tool Interface,JVM TI)。该界面提供方法控制在 JVM 中运行的应用程序的执行。通过该界面,您可以利用 IBM 发布的 JVM 中可用的功能收集线程统计信息。还可以通过对您要分析的 Java 应用程序的启动命令 进行修改,让 JVM 在启动时加载此本地库。然后本地库使用与它一起打包的 Java 类创建一个平台 MBean 服务器,该服务器提供允许 JLAGui 连接 JLAagent 的机制。 启动 MBean 服务器之后, JLAGui 可以通过将该服务器导航到本地库中,然后导航到运行的 JVM 中 ,从而请求运行的应用程序的锁统计信息。由于 JLAagent 和 JLAGui 通过 MBeans 连接,因此它们没有 必要在同一机器上运行;JLAGui 还可以从网络上的任意位置连接到 MBean 服务器。 IBM的Java诊断,第3部分(2)时间:2011-11-02 IBM Toby Corbin运行 JLA 若要运行 JLA,您必须首先为您的应用程序配置 JLAagent。 然后您才可以启动 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |