JVM可视化监控

news2024/10/21 11:55:57

1 JConsole

一、介绍

JConsole 是一种 Java 监控和管理控制台工具,可以用于监视 Java 虚拟机(JVM)的性能和资源利用情况。它提供了一种图形化界面,可以实时查看 JVM 的运行状态、内存使用情况、线程活动、垃圾回收等信息,以及执行一些管理操作。

使用 JConsole 可以帮助开发人员和系统管理员进行性能调优、内存泄漏排查和故障诊断,从而提高应用程序的可靠性和性能。



二、启动 JConsole

在 windows 下我们可以直接找到 JDK 的所在目录,去 /bin 目录下找到 jconsole.exe 双击运行即可



连接到 Java 进程



在本地进程中会展示出当前计算机所有正在运行的 Java 程序,只需选中双击进入,再点击 不安全的连接



即可进入到监听界面



三、监控 JVM 资源

连接成功之后,JConsole 将会显示应用程序的概览信息,在概览标签页可以查看程序的垃圾回收、类加载、线程等信息。



3.1 内存:

显示 JVM 的内存使用情况,包括堆内存、非堆内存、内存池等。



内存 界面具有 执行GC 按钮,可以随时单击该按钮以执行垃圾回收。同时还能通过点击 图表-下拉选项 或者单击 右下角内存图 切换所要监控的内存区。Java VM 管理两种内存:堆内存和非堆内存,这两种内存都是在 Java VM 启动时创建的。

3.2 线程:

显示 JVM 中的线程活动情况,包括线程数、线程状态、死锁等。



红色:峰值线程数

蓝色:活动线程数左下角的线程列表列出了所有活动线程,选中 线程 单击,会显示有关该线程的信息,包括线程名称,状态和堆栈跟踪。点击 检测死锁 可以检测出死锁



3.3类:

显示 JVM 加载的类信息,包括已加载类的数量、被卸载的类数量等。



红色:加载的类的总数(包括随后卸载的类)

蓝色:当前加载的类的数量详细信息 部分显示自 Java VM 启动以来加载的类的总数,当前加载的数量和卸载的数量。可以通过选择 时间范围-下拉框 来查询指定时间范围的类加载情况。

3.4 VM 概要:

显示JVM的基本信息,如 JVM 的启动参数、命令行参数等。



3.5 MBean:

显示了所有在 platform. MBeanserver 上注册的 MBeans 的信息。



左边的树形结构显示了所有的 MBean,选择了一个 MBean 之后,其属性、操作、通知和其他信息会在右边显示。

2 VisualVM

1.介绍

VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。**您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。

Visual VM比较强大的JVM图形化监控工具,比jconsole强大完善。

VisualVM: Home

VisualVM: Home

https://visualvm.github.io/

2.使用

2.1 直接双击即可

2.2选择你的应用

2.3 概述界面

PID – 程序启动后的进程号,在命令行中可以用 jps命令查看

主机 – 如果是本机的话显示,localhost,如果是远程主机应该是显示远程主机的主机名或者IP

主类 – 程序入口类(main方法所在的类)

参数 – VisualVm 启动的时候使用的一些配置文件路径

JVM – jvm类型

Java – jdk的版本信息

Java Home – JDK安装目录

JVM参数 – VisualVm 启动时候设置的JVM参数

2.4监控界面 系统资源占用情况

CPU – 展示java程序运行的时候占用的cpu资源 如下图中橙色的表示程序运行使用的cpu资源百分比,蓝色部分表示垃圾回收占用CPU资源百分比

堆 – 这里要说明下堆内存的组成部分,堆是由老年代和新生代组成,其中新生代有由"伊甸园"和"两个幸存区组成"三部分组成,堆视图看到的资源占用实际是"老年代"、“伊甸园(Eden)”、"两个幸存者(Survivor )"的一个综合情况。

PermGen – Perm 区用来存放java类以及其他虚拟机自己的静态数据,(常被称为持久代或者方法区)

类 – 此视图 主要展示 当前程序加载了多少个类

线程 – 当前程序的线程启动情况

执行垃圾回收 – 手动触发一次GC 相当于在程序代码中调用(System.gc()),如果是远程连接到生产环境中请慎重点击。

堆Dump – 生产当前程序的内存快照hprof文件,对于分析内存溢出问题比较有帮助。(可以查看当前程序内存中的所有对象)

2.5线程页面 程序中所有的线程运行状态

线程dump – 此按钮主要生产当前程序中所有线程的快照(对分析线程死锁,比较有帮助)

时间线 – 展示每个线程的实时运行状态(不同颜色代表不同的状态)

表 – 按照二维表格的形式展示每个线程不同状态的时间统计信息

2.6抽取样

CPU-> CPU样例 – 主要展示方法消耗的CPU资源比例和时间

CPU->线程CPU时间 – 主要展示线程消耗的CPU资源信息

内存-> 堆柱状图 – 展示堆内存中各种对象占用的字节数和总实例数

内存-> 每个线程分配—展示不同线程占用内存的情况

2.7 VisualGC插件界面

插件中心地址:https://visualvm.github.io/pluginscenters.html

VisualVM: Plugins Centers

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

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

相关文章

Spring 实现 3 种异步流式接口,干掉接口超时烦恼

大家好,我是小富~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某…

每日OJ题_牛客_小乐乐改数字_模拟_C++_Java

目录 牛客_小乐乐改数字_模拟 题目解析 C代码 Java代码 牛客_小乐乐改数字_模拟 小乐乐改数字_牛客题霸_牛客网 (nowcoder.com) 描述: 小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数&#…

Python 工具库每日推荐【PyAutoGUI】

文章目录 引言Python桌面自动化库的重要性今日推荐:PyAutoGUI工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:自动化图像识别和点击案例分析高级特性失败安全机制相对坐标操作扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Python工…

如何远程查看孩子的电脑使用?

越来越多的家庭拥有了多台电脑和智能设备。家长们往往没有办法时刻陪伴在孩子身边,监督他们的上网行为。而远程控制电脑可以帮助家长在任何时间、任何地点对孩子的电脑进行监控和管理,确保他们能够安全、健康地使用互联网。 通过远程控制软件&#xff0c…

锦锐科技CA51F7系列笔记

1、PWM (1)芯片一共有6个PWM通道(PWM0~PWM5) (2)IRCH时钟(IRCH 频率为 16MHz) (3)IRCL时钟(IRCL频率为100KHz) (4&…

JavaScript 命令模式实战:打造可撤销的操作命令

一. 前言 在前端开发中,命令模式(Command Pattern)作为一种行为型设计模式,可以帮助我们将请求封装成一个对象,从而实现调用对象和执行对象之间的解耦,方便扩展和修改。 本文将和大家分享 JavaScript 中的…

实战子网掩码划分问题

拓扑要求总部有2个业务段,分部也有3个业务 还有互联地址段,还有管理地址段!!!! 23117 个段 192.168.1.0/24 怎么划分呢? 1 根据要求划分地址段 192.168.1.0/24 要划分7个网段那就…

linux------缓冲区与C库的原理

前言 一、缓冲区 缓冲区的作用是提高效率,因为将数据写入到设备,是需要调用系统接口的,如果每次写入缓冲区的数据就调用一次系统调用,涉及到系统调用这时操作系统就会介入,用户态转为内核态,这个过程需要时…

自然语言到 SQL 的曙光:我们准备好了吗?

发布于:2024 年 10 月 08 日 各位读者,国庆假期已过,我们打工人要开启奋斗新征程了,今天小编也是刚上班假期综合征还没过去,就被抓过来读论文,还好我在假期没闲着,整理了几篇关于 NL2SQL 的最新…

周易解读:两仪01

两 仪01 上一节里面,我们讲解了太极的知识。关于太极呢,它是可以有着多方面的含义。在这里呢,我们主要地,选取它的宇宙生成中的一种含义,认为太极是有所萌动,有所积累,但是呢,就是…

【YOLOv11】实战一:在LabVIEW 中使用OpenVINO实现YOLOv11

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 📑推荐文章:『LabVIEW人工智能深度学习指南』 🍻本文由virobotics(仪酷…

单体应用、SOA 和微服务架构的区别

在软件架构的发展历程中,单体应用、面向服务架构(SOA)和微服务架构都有着各自的特点和适用场景。了解它们之间的区别,有助于我们在不同的项目需求下做出更合适的架构选择。 一、单体应用 (一)定义与特点 …

DAY8 Final等

Final关键字 final修饰静态变量,这个变量今后被称为常量, 可以记住一个固定值,并且程序中不能修改了,通常这个值作为系统的配置信息。常量的名称,建议全部大写,多个单词用下划线连接。 public static final…

PaddleOCR的包装生产日期识别_随记1

一、前言 项目难点 没有训练数据图像质量层次不齐: 角度倾斜、图片模糊、光照不足、过曝等问题严重 二.、环境搭建 本任务基于Aistudio完成, 具体环境如下: 操作系统: LinuxPaddleOCR: PaddleOCR_2.7text_renderer: masterpaddlepaddle-gpu2.6.0cuda版本是11.8,…

量化投资学习

1:投资定义就是付出一定的代价,期望能够得到一定汇报,可能会出现没有回报 2:投资分析流派 2.1:宏观策略分析法:从宏观经济大方向入手,再应用到具体股票也叫自上而下的研究方法,需要理解这个趋势的核心驱动…

TS中的接口、泛型、自定义类型 与vue3的使用

泛型的使用场景: 当我们定义了一个对象时,在多次传值的过程中,其对象中的属性值被更改了,以至于后期拿不到我们需要的数据。 举个例子,当我们使用person.name时,是可以使用的。但是多次传递之后&#xff…

讯方·智汇云校华为ICT大赛赛前辅导直播安排

华为ICT大赛赛前辅导直播安排 网络赛道在“智汇云校”视频号上观看。 直播时间: 网络:2024.10.14-10.15-10.17-10.18-10.21-10.23-10.25-10.28-10.29-10.30-11.1-11.4-11.5-11.6,每晚19:30-22:00 安全:2024…

【Next.js 入门教程系列】05-数据库

原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话, 给我的库点个star,关注一下吧 上一篇【Next.js 入门教程系列】04-构造 API 数据库 本篇包括以下内容: Setting up PrismaDefining data modelsCreat…

pinia学习笔记(1.0)

首先贴出官网地址:开始 | Pinia pinia作为Vue3项目中常用的状态管理工具,正逐渐取代vuex,现从0到1自己搭建pinia仓库。 首先,安装pinia,使用包管理器工具(npm,pnpm,yarn,Bun等都可以) 安装成…

QGIS如何在正射影像中获得绘制线段的长度信息||QGIS如何获取绘制点的经纬度(如何生成WKT属性)并且导出为CSV文件

QGIS如何在正射影像中获得绘制线段的长度信息 前置条件: 导入正射影像和绘制完需要计算长度的绘制线段后 1.检查菜单栏是否有数据处理(processing)按键,如果没有的话请根据以下链接打开processing工具箱:https://bl…