JVM进阶之路(九)性能监控工具-可视化工具篇

在前面已经学习了JVM性能监控的命令行工具,接下来学习JVM性能监控的命令行工具,通过可视化工具可以更直观地监控JVM性能、处理JVM相关问题。

1、JConsole

JConsole( Java Monitoring and Management Console),是一款基于 JMX( Java Manage-ment Extensions) 的可视化监视管理工具。

它的功能主要是对系统进行收集和参数调整,不仅可以用在虚拟机本身的管理上,还可以用于运行于虚拟机之上的软件中。

1.1、JConsole连接Java程序

JConsole程序位于%JAVA_HOME%bin目录下,直接通过命令启动。

JConsole启动和连接

在新建连接对话框中,罗列了所有的本地Java应用程序,选择需要连接的程序即可。

下面还有一个用于连接远程进程的文本框,输入正确的远程地址即可连接。

如果一个程序需要使用JConsole与那成连接,则需要在启动Java程序时,加上以下参数:

复制代码

JAVA_OPTS="-Dfile.encoding=UTF-8" 
JAVA_OPTS="$JAVA_OPTS -Dlog.dir=$LOG_PATH" 
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(本机IP) -Dcom.sun.management.jmxremote" 
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=xx" 
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

1.2、Java程序概况

使用JConsole连接了一个本地程序,在概述可以看到Java程序运行的概览信息,包括堆内存使用情况线程CPU使用情况四项信息的曲线图。

JConsole概览

1.3、内存监控

内存的作用相当于可视化的jstat命令,用于监视被收集器管理的虚拟机内存。

它不仅包含堆内存的整体信息,更细化到eden区、suvivior区、老年代的使用情况。

JConsole内存监控

为了更加清晰地查看内存地变化,运行下面一段程序,然后连接:

复制代码

/**
 * VM参数: -Xms100m -Xmx100m -XX:+UseSerialGC
 */
public class JConcoleRAMMonitor {

    /***
     * 内存占位符对象,一个OOMObject大约占64KB
     */
    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(300);
            list.add(new OOMObject());
        }
        System.gc();
    }

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值