栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

六、JConsole性能分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

六、JConsole性能分析

目录

一、JConsole简介二、JConsole使用

1、命令行启动2、GUI shell启动 三、监测死锁程序

1、死锁代码2、分析死锁程序3、检测图4、线程检测 四、死锁问题分析五、VusualVM分析工具

1、监视2、死锁

一、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、死锁

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号