六、JConsole性能分析

一、JConsole简介

  • 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码

二、JConsole使用

1、命令行启动

  • 要求:需要配置好JDK的环境目录
  • 然后在cmd命令行直接执行命令即可,如jps

在这里插入图片描述

2、GUI shell启动

  • 找到JDK 安装路径,打开bin文件夹,双击jconsole

在这里插入图片描述

三、监测死锁程序

1、死锁代码

package com.sjyl.thread;

class ThreadDemo02 implements Runnable {
    // 同时多个窗口共享100
    private volatile static int count = 100;// 存放方法区中
    private static Object oj = new Object();
    public boolean flag = true;

    public void run() {
        if (flag) {
            while (count > 0) {
                synchronized (oj) {
                    try {
                        Thread.sleep(10);
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                    sale();
                }
            }
        } else {
            while (count > 0) {
                sale();
            }
        }
    }

    public synchronized void sale() {
        synchronized (oj) {
            try {
                Thread.sleep(10);
            } catch (Exception e) {
                // TODO: handle exception
            }
            if (count > 0) {
                System.out.println(Thread.currentThread().getName() + ",出售" + (100 - count + 1) + "张票");
                count--;
            }
        }

    }
}

public class Test0002 {
    public static void main(String[] args) throws InterruptedException {
        ThreadDemo02 threadDemo02 = new ThreadDemo02();
        Thread t1 = new Thread(threadDemo02, "窗口1");
        Thread t2 = new Thread(threadDemo02, "窗口2");
        t1.start();
        Thread.sleep(40);
        threadDemo02.flag = false;
        t2.start();
    }
}

2、分析死锁程序

  • 运行死锁代码后,在JConsole中选择对应的Test000程序,连接 -> 不安全的连接(不需要使用SSL)
    在这里插入图片描述

3、检测图

在这里插入图片描述

4、线程检测

在这里插入图片描述

四、死锁问题分析

  • 在Test0002中我们有2个线程:窗口1,窗口2
  • 在JConsole的线程窗口中,我们可以查看窗口1和窗口2这2个线程的信息
  • 发现“已锁定”,并且提示了在java中的行数“com.sjyl.ThreadDemo02.run(Test0002.java:18)”
    在这里插入图片描述
    在这里插入图片描述

五、VusualVM分析工具

  • 工具路径和JConsole一样的,都是在JDK的bin目录下

1、监视

在这里插入图片描述

2、死锁

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无休止符

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值