《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》- 4.3.2 JConsole:Java监视与管理控制台 (笔记随录)

写该篇文章,主要是方便自己github的笔记引用图片(虽然网页版好像图片显示不出来,但是我自己都是clone下来后编辑的,所以没差)。
写该篇文章,主要是方便自己github的笔记引用图片(虽然网页版好像图片显示不出来,但是我自己都是clone下来后编辑的,所以没差)。
写该篇文章,主要是方便自己github的笔记引用图片(虽然网页版好像图片显示不出来,但是我自己都是clone下来后编辑的,所以没差)。

JConsole(Java Monitoring and Management Console)是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean(Managed Bean)对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中,典型的如中间件大多也基于JMX来实现管理与监控。虚拟机对JMXMBean的访问也是完全开放的,可以使用代码调用API、支持JMX协议的管理控制台,或者其他符合JMX规范的软件进行访问。

1. JConsole的界面如下:

2. 启动一个java进程,用JConsole监听

下面代码来自书籍,启动时指定虚拟机参数-Xms100m -Xmx100m -XX:+UseSerialGC

import java.util.ArrayList;
import java.util.List;

public class JConsoleTestCase {

    /**
     * 内存占位符对象,一个OOMObject大约占64K
     */
    static class OOMObject {
        public byte[] placeholder = new byte[64 * 1024];
    }

    public static void fillHeap(int num) throws InterruptedException {
        List<OOMObject> list = new ArrayList<OOMObject>();
        for (int i = 0; i < num; i++) {
            // 稍作延时,令监视曲线的变化更加明显
            Thread.sleep(50);
            list.add(new OOMObject());
        }
        System.gc();
    }

    public static void main(String[] args) throws Exception {
        fillHeap(1000);
    }

}

(Ashiamd的github个人学习笔记)[https://ashiamd.github.io/docsify-notes/#/README] ~小尾巴~
原文地址:https://www.cnblogs.com/Ashiamd/p/14059108.html