通过Health Center API向死锁检测应用程序添加方法分析视图

Health Center 是一款适用于 Java 的 IBM监视和诊断工具,是一个免费的低开销诊断工具和 API,用于监视在 IBM Java 虚拟机 (JVM) 上运行的应用程序。有关此 API 可以执行的操作的细节,请参阅 第 1 部分。在本文中,将会采用 第 1 部分中开发的死锁检测应用程序,并添加一个方法分析视图来显示应用程序的哪些地方花费了大部分的 CPU 周期。(请 参阅 下载,以便获得示例的完整源代码。)

系统要求

Health Center API bundle 至少需要安装 Eclipse 3.4 或 Eclipse 4.x。

测试应用程序

在 第 1 部分中,已经测试了生成死锁条件的应用程序。在本文中,我 们将使用该应用程序的修订版,该版本包含一些会给 CPU 施加压力的功能。请参阅 下载,以获得相关的源代码。清单 1 显示了一个代码片段示例:

清单 1. 新的 GenerateDeadLock 源代码的代码片段

private class 

runSlowMethods extends Thread { 

  public void run() {
     SlowClassAndMethod1 sCAM1 = new SlowClassAndMethod1();
     SlowClassAndMethod2 sCAM2 = new SlowClassAndMethod2(); 

     sCAM1.start();
     sCAM2.start();
  } 

  private class SlowClassAndMethod1 extends Thread { 

     public void run() {
        while (true) {
           slowMethod1();
           try {
              Thread.sleep(2000);
           } catch (InterruptedException e) {
              e.printStackTrace();
           }
        }
     } 

     private void slowMethod1() {
        String largeString = new String("a string to add");
        for (int i = 0; i < 1000000; i++) {
           largeString.concat(largeString);
        } 

     }
  } 

  private class SlowClassAndMethod2 extends Thread { 

     public void run() {
        while (true) {
           slowMethod2();
           try {
              Thread.sleep(2000);
           } catch (InterruptedException e) {
              e.printStackTrace();
           }
        }
     } 

     private void slowMethod2() {
        HashMap map = new HashMap();
        String largeString = new String("another string to add");
        for (int i = 0; i < 1000000; i++) {
           map.put(i, largeString);
           largeString.concat(largeString);
        } 

     }

通过与该程序连接的 Health Center 代理启动该程序。要使用 Java 5 SR10 及更高版本、Java 6 SR5 及 更高版本和 Java 7 并通过代理来启动该应用程序,请使用以下命令(参见图 1):

java -Xhealthcenter GenerateDeadlock

图 1. 启动应用程序

要使用 Java 5 SR9 及其早期版本或者 Java 6 SR4 及其早期版本并通过代理来启动应用程序,请使用:

java -agentlib:healthcenter - Xtrace:output=healthcenter.out GenerateDeadlock

您可以下载  IBM 开发人员工具包。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, private
, thread
, 应用程序
, 死锁
, 版本
死锁检测
kettle 视图 死锁、health center、usc health center、nyu health center、tulane health center,以便于您获取更多的相关知识。

时间: 2025-01-01 17:40:59

通过Health Center API向死锁检测应用程序添加方法分析视图的相关文章

监视Java应用程序:向死锁检测应用程序添加方法分析视图

本系列的第 2 部分将采用 第 1 部分中的死锁检测应用程序,并添加一个方法分析视图来显示应用程序的哪些地方花费了大部分的 CPU 周期. Health Center 是一款适用于 Java 的 IBM®监视和诊断工具,是一个免费的低开销诊断工具和 API,用于监视在 IBM Java 虚拟机 (JVM) 上运行的应用程序.有关此 API 可以执行的操作的细节,请参阅 第 1 部分.在本文中,将会采用 第 1 部分中开发的死锁检测应用程序,并添加一个方法分析视图来显示应用程序的哪些地方花费了大部

Health Center API入门教程

您是否曾经遇到过没有明确原因的应用程序服务器挂起或者 Java 应用程序变得没有响应?您的应用程序是否内存不足 或者运行情况欠佳?使用 Health Center,您就可以更轻松地解决这些问题. 使用 Health Center 监视和诊断问题 Health Center 是一款适用于 Java 的 IBM 监视和诊断工具,是一个免费的低开销诊断工具和 API,用于监视在 IBM Java 虚拟机 (JVM) 上运行的应用程序.借助 Health Center,您可以通过提供信息来快速评估正在运

监视Java应用程序:Health Center API入门

本文章系列由两个部分组成,在本系列的第 1 部分中,您将学习如何使用 Health Center API,以及如何监视正在运行的 Java 应用程序中的死锁.第 2 部分 使用了本文中开发的死锁检测应用程序,并添加了一个方法分析视图来显示应用程序的哪些地方花费了大部分的 CPU 周期. 您是否曾经遇到过没有明确原因的应用程序服务器挂起或者 Java 应用程序变得没有响应?您的应用程序是否内存不足或者运行情况欠佳?使用 Health Center,您就可以更轻松地解决这些问题. 使用 Health

线程-Mina框架死锁检测算法的原理?

问题描述 Mina框架死锁检测算法的原理? 30C private void checkDeadLock() { if (!(this instanceof CloseFuture || this instanceof WriteFuture || this instanceof ReadFuture || this instanceof ConnectFuture)) { return; } StackTraceElement[] stackTrace = Thread.currentThre

MySQL · 引擎新特性 · 可开关的InnoDB死锁检测

在数据库系统中,死锁问题几乎是不可避免的,一般要么是资源互相占用导致,或者是系统内部的锁升级(在innodb内尤其普遍),尤其是糟糕的未经审查的SQL设计通常是导致死锁的元凶.在MySQL InnoDB引擎中,死锁的检测是通过深度遍历进行的,每一个需要等待的行锁请求都需要去检测是否可能产生死锁. 关于InnoDB事务锁,可以参阅我之前的一篇博客,这里不展开讨论:MySQL · 引擎特性 · InnoDB 事务锁简介 死锁检测是一个成熟的数据库系统必不可少的功能,但是!如果我们的应用SQL经过了充

操作系统教程-死锁检测算法/分配资源给进程

问题描述 死锁检测算法/分配资源给进程 把死锁检测算法用于下面的数据 若第五个进程提出资源请求request5 (0,0,1,0), 为什么系统不能分配资源给它? 解决方案 针对进程快照的死锁检测算法---------------------- 解决方案二: 银行家算法? 你给的问题有点模糊,搞不懂里面的数据.

Java死锁检测

ThreadMXBean 常用方法: /** ThreadMXBean常用方法test */ ThreadMXBean threadMXBean= ManagementFactory.getThreadMXBean(); int count=threadMXBean.getThreadCount();//获取当前线程数目 System.out.println("当前线程数为:"+count); long[] threadIds=threadMXBean.getAllThreadIds(

详解SQL死锁检测的方法_MsSql

sql server中的死锁是指进程之间互相永久阻塞的状态,下文就将为您介绍如何检测sql server死锁,希望对您有所帮助. 死锁(deadlock)指进程之间互相永久阻塞的状态,SQL可以检测到死锁,并选择终止其中一个事务以干预sql server死锁状态. 第一步:首先创建两个测试表,表goods_sort和goods 表goods_sort:创建并写入测试数据 IF EXISTS(SELECT name FROM sysobjects WHERE name='goods_sort' A

浅谈linux的死锁检测 【转】

转自:http://www.blog.chinaunix.net/uid-25942458-id-3823545.html 死锁:就是多个进程(≥2)因为争夺资源而相互等待的一种现象,若无外力推动,将无法继续运行下去.注意,只有在多进程或者多线程之间或者他们与中断之间相互通讯或者共享资源才有可能发生死锁,单线程或者进程之间没有联系的话,一般不会发生死锁.锁的种类比较多,这里主要说自旋锁和信号量.两者的差别就在于前者获得不到资源时的动作是不断的资源(即忙转浪费cpu的cycles)而后者则表现为睡