【JVM 监控工具】使用JConsole监控进程、线程、内存、cpu、类情况

news2025/2/8 14:16:32

文章目录

  • 前言
  • 一、如何启动JConsole
  • 二、如何设置JAVA程序运行时可以被JConsolse连接分析
  • 三、JConsole如何连接远程机器的JAVA程序(举例说明)
  • 四、性能分析
    • 概述
    • 内存
    • 线程
    • VM摘要
    • MBean
  • 五、使用Jconsole监控某方法的性能
  • 总结

前言

Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗。

一、如何启动JConsole

可以从命令行(直接输入jconsole)或在 GUI shell (jdk\bin下打开)中运行。

在这里插入图片描述

当分析工具弹出时(取决于正在运行的 Java 版本以及正在运行的 Java 程序数量),可能会出现一个对话框,要求输入一个进程的 URL 来连接,也可能列出许多不同的本地 Java 进程(有时包含 JConsole 进程本身)来连接。如图所示:
在这里插入图片描述

想分析那个程序就双击那个进程。

二、如何设置JAVA程序运行时可以被JConsolse连接分析

本地程序(相对于开启JConsole的计算机),无需设置任何参数就可以被本地开启的JConsole连接(Java SE 6开始无需设置,之前还是需要设置运行时参数 -Dcom.sun.management.jmxremote)

三、JConsole如何连接远程机器的JAVA程序(举例说明)

  1. 写一个简单的一直运行的JAVA程序,运行在某台机器上如(192.168.0.181)

  2. 另外一台机器进行连接

jconsole.exe 192.168.0.181:8999  

也可以在已经打开的JConsole界面操作 连接->新建连接->选择远程进程->输入远程主机IP和端口号->点击“连接”,如图:
在这里插入图片描述

然后就会进入分析界面。

四、性能分析

进入概述页面,可以看到堆内存,线程,类,CPU使用情况做了个统一的监控并实时显示,这里个页面就可以很有效的全面监视资源的使用情况了,有以下六个标签:

  • 概述: Displays overview information about the Java VM and monitored values.
  • 内存:显示内存使用信息
  • 线程:显示线程使用信息
  • 类:显示类装载信息
  • VM摘要:显示java VM信息
  • MBeans:显示 MBeans.

概述

在这里插入图片描述

内存

在这里插入图片描述

这个比较有价值,参看堆内存,非堆内存,内存池的状况总体内存的分配和使用情况以及不同的GC进行垃圾回收的次数和时间。可以手动进行GC查看内存变化。

线程

在这里插入图片描述

左下角显示所有的活动线程(如果线程过多,可以在下面的过滤栏中输入字符串过滤出你想要观察的线程)。点击某个显示会显示这个线程的名称、状态、阻塞和等待的次数、堆栈的信息。

统计图显示的是线程数目的峰值(红色)和当前活动的线程(蓝色)。另外下面有个按钮“检测到死锁”,有时候会有用处。

在这里插入图片描述

VM摘要

在这里插入图片描述

MBean

在这里插入图片描述

五、使用Jconsole监控某方法的性能

如果想监控分析系统项目代码里面某个方法的性能(如使用的CPU、GC情况),可以单独跑这个方法。如我要测试系统MC缓存刷新使用的内存和CPU,我先写了下面这样一个main类:

public class mcTest {

    public static void main(String[] args){
        try {
            // 休眠1分钟,让我有时间开启jconsole
            Thread.sleep(60000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.setProperty("spring.profiles.active", "development");
        ApplicationContext instance = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 手动启动spring容器,获取缓存刷新job类
        McRemoteCacheJob mcRemoteCacheJob= (McRemoteCacheJob )instance.getBean("mcRemoteCacheJob");
        adsRemoteCacheJob.doJob();
    }
}

运行main类,然后开启jconsole,选择mcTest这个本地进程:

在这里插入图片描述

总结

JConsole毕竟是JDK自带的东西,功能虽然没有一些商业软件那么强大,但是稳定性好,在大压力情况下也不会发生什么问题。而且,提供了相对全面的系统监控功能,还是值得一用的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络工程师必备,华为/思科/华三交换机命令对比

本期对华为/思科/华三交换机配置命令对比,来看下他们的区别在哪里,这里对命令做了个汇总,平时对命令不熟的朋友这次可以看下。 另外我们来看下华为与H3C的命令情况,方便大家进行对比。 一、华为交换机基础配置命令 1、创建vlan: …

Unity基础1——3D数学

一、Mathf (一)Mathf 和 Math ​ Math 是 C# 中封装好的用于数学计算的工具类 —— 位于 System 命名空间中 ​ Mathf 是 Unity 中封装好的用于数学计算的工具结构体 —— 位于 UnityEngine 命名空间中 ​ 他们都是提供来用于进行数学相关计算的 ​…

机器学习 day18(用Tensorflow搭建一个神经网络)

之前搭建神经网络的方法 先初始化输入数据X,创建layer 1并计算激活值a1,创建layer 2并计算激活值a2,这是前向传播代码的显式形式。 另一种简单些的创建神经网络的方法 创建layer 1和layer 2与前一种方法相同,但我们不需要手动…

JUC并发编程学习笔记

1:回顾多线程 进程和线程是什么 进程是操作系统分配资源的最小单元,而线程是cpu调度的最小单元。 java默认有几个线程 2个,main线程和GC线程(GC垃圾回收机制) java可以开启线程么 不能 并发和并行 并发,多线程操作同一个资源,cp…

纯电驱动车辆动力总成的优化与比较研究

摘要: 不同动力总成拓扑结构的对比分析 前言 纯电驱动的电动汽车因为集成有大容量电池组,可以存储取自公共电网的电能,用来驱动车辆的行驶。相比于传统的混合动力汽车,具有更加优越的节能减排效果和潜力。因此,近年来…

cpp文件编译过程 makefile cmake

这里写目录标题 argc argv参数头文件编译过程静态链接&#xff0c;动态链接&#xff0c;静态库&#xff0c;动态库 -shared制作使用动态库libxxx。so冲突 静态库预处理编译汇编链接目录选项-Idir 大写Iinclude<> 与 " "-I -I- 与 -I- -I ld/objdump/objcopy 选…

内网渗透—隧道搭建Ngrok与Frp内网穿透

这里写目录标题 1. 前言1.1. 隧道技术介绍1.2. 代理技术介绍1.2.1. 正向代理1.2.2. 反向代理1.2.3. 透明代理1.2.4. 正向代理与透明代理区别 2. 内网穿透2.1. Ngrok2.1.1. 访问Ngrok2.1.2. 代理设置2.1.2.1. 开通代理2.1.2.2. 配置隧道2.1.2.3. 下载客户端 2.1.3. 配置客户端2.…

P20[6-8]编码器接口测速(软)

与外部中断编码器逻辑不同,此处编码器使用的是定时器方法 1.Encoder编码器部分: #include "stm32f10x.h" // Device header void Encoder_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCm…

吐血整理,自动化测试场景处理(多场景覆盖)+解决方案

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、添加时间等待 …

53.最大子数组和

贪心算法 时间复杂度&#xff1a;代码中只有一个循环&#xff0c;循环次数为数组的长度&#xff0c;因此时间复杂度为 O(n)&#xff0c;其中 n 是数组的长度。空间复杂度&#xff1a;代码中只使用了常数级别的额外空间&#xff0c;因此空间复杂度为 O(1)。 这段代码使用贪心算…

QT C++入门学习(2) QT Creator写一个简单的上位机控制LED

上位机和下位机的概念 上位机&#xff1a;指的是可以直接发送操作指令的计算机或者单片机&#xff0c;一般提供用户操作交互界面并向用户展示反馈数据。 典型设备&#xff1a;电脑、平板、手机、面板、触摸屏 下位机&#xff1a;指的是与机器相连接的计算机或者单片机&#…

Studio 3T 2023.5 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端

Studio 3T 2023.5 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端 请访问原文链接&#xff1a;https://sysin.org/blog/studio-3t-2023/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Studio 3T&#xff0c;M…

黑客松必备|Bear Necessities Hackathon Office Hours汇总

由Moonbeam和AWS Startups联合主办的Bear Necessities Hackathon黑客松启动仪式已于5月30日举行。本次黑客松将历时约1个月的时间&#xff0c;包含6个挑战&#xff0c;分别由Moonbeam基金会、Chainlink、StellaSwap、SubQuery、Biconomy提供赞助&#xff0c;总奖池超过5万美金。…

面试软件测试时,面试官最想听到的答案是什么?

问题&#xff1a;面试软件测试时&#xff0c;面试官让你测一个软件&#xff0c;比如朋友圈&#xff0c;或者让你测试你的电脑为什么打不开网页&#xff0c;而QQ可以打开之类的&#xff0c;他最想听到的答案是什么&#xff1f; 如上所述&#xff0c;在实际面试中&#xff0c;面试…

懂点测试基础就敢要17k? 面试官:最多8K,多一分都没有...

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-25k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是3年工作经验&#xff0c;但面试…

Java泛型的使用

1.什么是泛型&#xff1f; 所谓泛型&#xff0c;就是允许在定义类、接口时通过 一个标识 表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时&#xff08;例如&#xff0c;继承或实现这个接口&#xff0c;用这个类型声明变量、创建对象时&#…

5.Opencv-图像滤波(均值,方框,高斯,中值,双边滤波)

常见的图像滤波操作有&#xff1a; 均值滤波&#xff08;cv2.blur&#xff09; 方框滤波&#xff08;cv2.boxFilter&#xff09; 高斯滤波&#xff08;cv2.GaussianBlur&#xff09; 中值滤波&#xff08;cv2.medianBlur&#xff09; 双边滤波&#xff08;cv2.bilateralFilter…

电脑小白不要错过这五款小众但强大的软件

电脑上的各类软件有很多&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;专注于实用功能&#xff0c;简洁干净、功能强悍。 多语言翻译——QTranslate QTranslate是一款实用的多语言翻译工具。它可以在任何应用程序中选中文本&#…

【C++】模版进阶

目录 一、非类型模版参数二、模板的特化1、概念2、函数模版特化3、类模板特化1.全特化2.偏特化3.类模板特化应用示例 三、模版分离编译1、什么是分离编译2、模板的分离编译3、模板的优缺点 一、非类型模版参数 模版参数分为类型模版参数与非类型模版参数 类型模版参数&#x…

一定要看!带你选择适合自己的测试工具

目录 前言&#xff1a; Jmeter实现接口请求JSON断言 Postman接口请求断言 前言&#xff1a; 选择适合的测试工具对于测试人员和测试项目的成功非常重要。不同的测试工具都有其独特的优缺点&#xff0c;而且每个项目的需求也不尽相同。因此&#xff0c;在选择测试工具时&#…