IBM的Java诊断,第3部分

使用面向 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 服务器。

时间: 2025-01-20 12:52:52

IBM的Java诊断,第3部分的相关文章

IBM的Java诊断,第4部分

使用分析模块扩展 IBM Dump Analyzer for Java 编写自己的分析程序 简介:本系列的第一篇文章 介绍了 IBM Dump Analyzer for Java(或者Dump Analyzer).您已经了 解了它的功能.如何获取以及运行方式.在开始这篇文章之前,您应该温习一下上一期的文章,确保您已 经完全理解了 Dump Analyzer 的工作原理. Dump Analyzer 工具的一个关键方面是它具有可扩展 性.它是由一组分析模块 组成,每个模块负责对转储的一个特定方面进

IBM的Java诊断,第1部分

介绍面向 Java 的 IBM 转储分析器(IBM Dump Analyzer) 简介:Java 应用程序已经变得越来越复杂:因此,对这些应用程序进行问题诊断变得不再轻 松,并且可能需要某个外部服务组织做大量的工作.若能够指明正确的方向将节省时间和费用.IBM Dump Analyzer for Java 工具可以对格式化的系统转储做基本分析并生成简明的报告,指导您如何进行下一步 操作. Java 语言已经成为软件开发中的主导语言,因此, Java 虚拟机(VM)的稳定性成为一个 非常重要的问题

IBM的Java诊断,第5部分

使用 Health Center 优化应用程序 快速并轻松地修复性能问题.识别配置问题并监控 Java 应用程序 简介:IBM Monitoring and Diagnostic Tools for Java - Health Center 是一个用于监控 一个正在运行的 Java 应用程序的工具.它通过图表.曲线图和表全面报告系统健康状况,并就如何修复 问题提供建议.Health Center 包含一个开销极低的方法配置程序(profiler).一个垃圾收集可视化程 序和一个锁定配置程序,用于

IBM的Java诊断,第2部分

使用 Extensible Verbose Toolkit 进行垃圾收集 提高应用程序性能.优化垃圾收集以及发现应用程序问题 简介:Extensible Verbose Toolkit 是 IBM 的新工具,其设计目标为帮助诊断和分析与内存 有关的 Java 性能问题 .本文是四篇系列文章的第二篇,介绍如何获得和使用该套件,并演示如 何使用它来快速诊断某些常见的问题. 鉴于以下这些原因,您可能需要仔细查看应用程序中的垃 圾收集 (GC).您可能关心应用程序的内存使用模式:是否使用了太多内存?是否

IBM J9 Java虚拟机正式开源,贡献给Eclipse基金会管理

去年这个时候,IBM 曾宣布要开源其 J9 Java 虚拟机 (JVM),并命名为 OpenJ9.近日,我们发现该项目已托管至 GitHub,并且可以看到,OpenJ9 已贡献给 Eclipse 基金会. 据 OpenJ9 官网介绍,OpenJ9 是一个高性能的企业级 Java 虚拟机. OpenJ9 项目的长期目标是促进 JVM 开发者的开放生态系统,从而可以与硬件平台.操作系统.工具和框架设计师和开发者进行协作和创新. 生态系统通过竞争已得到改进,Java 社区从 JVM 规范的多个实现中受

IBM,SUN,JAVA,ECLIPSE原来也有小故事

JAVA当然是SUN公司的编程作品了. 而ECLIPSE当然是IBM作的开发IDE工具了.JAVA实际应用多半是以它为基础+插件来编写代码的. 呵呵,SUN当然是太阳的意思了. 而Eclipse是日蚀的意思,针对sun公司,而起的名字. 这个小典故,倒是刚刚才知道...

Java技术,IBM风格: Java技术的新纪元

预计于今年秋天将最终发布的 Java 平台最新更新意义重大且倍受期待.虽然尚未通过 Java Community Process (JCP) 正式创建 Java 7 平台 Java Specification Request (JSR),并且最终特性集仍然未知,但 Oracle 推出的 Early Access 下载以及 Oracle 团队的公开声明为我们理解 Java SE 7 的内容提供了一些帮助. 预计特性分为以下四类: 非 Java 语言支持 "易于开发" 更新 模块化支持 可

Java技术,IBM风格: 监视和判断问题

随着时间的推移,IBM 为它的 Java 运行时实现开发了许多监视和问题诊断设施.利用这些工具,IBM 支持团队.Java 应用程序开发人员和生产操作人员可以诊断和解决在 Java 开发中遇到的问题. 本文讨论三种主要的设施,因为它们是在 Java 技术的 IBM 实现的最新版本中实现的:跟踪引擎.转储引擎和 DTFJ 工具 API.它们都有助于 Java 开发人员判断问题的根源. 跟踪引擎 在判断软件的问题时,跟踪信息是一种强大的工具:可以使用它有效地研究问题场景(比如功能性错误.竞争状态和性

如何使用 IBM Toolbox for Java 开发 IBM i 应用程序

概述 IBM Toolbox for Java 是一个类的集合,用于开发与 IBM i 相关的 Java 应用程序.它包含的各类工具,提供了对于 IFS.IBM i 系统信息.客户端 / 服务器等各类应用场景的的支持,用户可以在其他平台诸如 Windows,Linux 上面方便的使用 IBM Toolbox for Java 开发运行在 IBM i 上的应用程序,为用户的编程和调试带来了极大的方便.我们在这些操作系统平台上,通过几行简单的代码就可以访问一台 IBM i 系统,对系统进行相应的控制