JVM 监控工具——JConsole

一 点睛

jconsole:从 Java5 开始,在 JDK 中自带的 java 监控和管理控制台。

用于对 JVM 中内存、线程和类等的监控,是一个基于 JMX(java management extensions)的 GUI 性能监控工具。

官方地址:https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html

工具位置

JVM 监控工具——JConsole_第1张图片

二 实战——基本测试

1 代码

package chapter03;

import java.util.ArrayList;
import java.util.Random;

/**
* -Xms600m -Xmx600m -XX:SurvivorRatio=8
* 老年代:400m
* 伊甸园:160m
* s0:20m
* s1:20m
*/
public class HeapInstanceTest {
    byte[] buffer = new byte[new Random().nextInt(1024 * 100)];

    public static void main(String[] args) {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        ArrayList list = new ArrayList<>();
        while (true) {
            list.add(new HeapInstanceTest());
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

2 运行程序后通过 jconsole 进行连接

JVM 监控工具——JConsole_第2张图片

3 概览

JVM 监控工具——JConsole_第3张图片

4 内存

JVM 监控工具——JConsole_第4张图片

5 线程

JVM 监控工具——JConsole_第5张图片

6 类

JVM 监控工具——JConsole_第6张图片

7 VM 概要

JVM 监控工具——JConsole_第7张图片

三 实战——检测死锁

1 代码

package chaper02;

/**
* @className: ThreadDeadLock
* @description: 线程死锁
* @date: 2021/8/22
*/
public class ThreadDeadLock {
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder();
        StringBuilder s2 = new StringBuilder();
        new Thread() {
            public void run() {
                synchronized (s1) {
                    s1.append("a");
                    s2.append("1");


                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    synchronized (s2) {
                        s1.append("b");
                        s2.append("2");


                        System.out.println(s1);
                        System.out.println(s2);
                    }
                }
            }
        }.start();

        new Thread() {
            public void run() {
                synchronized (s2) {
                    s1.append("c");
                    s2.append("3");

                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    synchronized (s1) {
                        s1.append("d");
                        s2.append("4");
                        System.out.println(s1);
                        System.out.println(s2);
                    }
                }
            }
        }.start();
    }
}

2 测试

JVM 监控工具——JConsole_第8张图片

JVM 监控工具——JConsole_第9张图片

你可能感兴趣的:(JVM,JVM)