JVM 常用监控工具介绍和使用

news2024/10/1 23:38:55

一、JPS 进程查看工具

用于列出当前系统中所有正在运行的 Java 进程。它的主要作用是查看 Java 进程的 PID(进程标识符)和主类名。可以帮助开发人员快速了解系统中正在运行的 Java 进程,对于监控和调试 Java 应用程序非常有用。

用法:

jps [options] [hostid]
options参数选项说明如下:
 -q 不输出类名、Jar名和传入main方法的参数
 -m 输出传入main方法的参数
 -l 输出main类或Jar的全限名
 -v 输出传入JVM的参数

示例

查看当前主机Java的进程有哪些:

jps

在这里插入图片描述
main类或Jar的全限名 和 jvm 的参数输出
在这里插入图片描述

二、jinfo 参数查看工具

用于查看和调整 Java 进程的运行时参数。它可以显示 Java 进程的启动参数、系统属性和 VM 参数,并且可以动态修改某些参数,而无需重新启动 Java 进程。可以帮助开发人员调试和优化 Java 应用程序的运行时参数。

用法:

jinfo [option] pid
options参数选项说明如下:
	-flag <name>: 显示指定名称的 JVM 参数的值。
	-flags: 显示所有的 JVM 参数及其值。
	-sysprops: 显示 Java 系统属性的值。
	-sysprops <name>: 显示指定名称的 Java 系统属性的值。
	-sysprops <name>=<value>: 设置指定名称的 Java 系统属性的值。
	-sysprops <file>: 从指定的文件中加载 Java 系统属性。
	-version: 显示 Java 应用程序的版本信息。
	-help: 显示帮助信息,列出所有可用选项及其用法。

示例

查看 PID21592Java 进程的 JVM 启动参数。

jinfo -flags 21592

在这里插入图片描述
仅查看 PID21592MaxHeapSize

jinfo -flag MaxHeapSize 21592

在这里插入图片描述

查看 PID21592Java 进程的系统属性。

jinfo -sysprops 21592

在这里插入图片描述

三、jmap 内存查看工具

用于生成 Java 进程的内存映像文件,以及查看 Java 进程的堆内存使用情况、内存分配情况等信息。可以帮助开发人员分析和诊断 Java 进程的内存使用情况,特别是在内存泄漏和性能调优方面。

用法:

jmap [option] pid
options参数选项说明如下:
	-heap: 显示 Java 堆内存使用情况。
	-histo: 显示 Java 堆内存中对象的统计信息。
	-dump: 生成 Java 堆内存转储文件。
	-F: 强制生成 Java 堆内存转储文件,即使 Java 进程不响应。
	-finalizerinfo: 显示在队列中等待终结的对象信息。
	-permstat: 显示永久代内存使用情况。
	-clstats: 显示类加载器信息。
	-heapsummary: 显示 Java 堆内存摘要信息。
	-J<flag>: 传递参数给 JVM。

示例

查看 PID21592Java 进程的堆内存使用情况。

jmap -heap 21592

在这里插入图片描述

查看 PID21592Java 进程的对象的内存分布情况。

jmap -histo 21592

在这里插入图片描述

PID21592Java 进程的内存映像文件,并保存为 heapdump.bin 文件。

jmap -dump:file=heapdump.bin 21592

在这里插入图片描述

生成的文件可使用下面 jhat 读取。

四、jhat 内存映像文件分析工具

用于分析 Java 进程的堆内存转储文件(heap dump file),并启动一个简单的 Web 服务器,以便用户通过浏览器查看和分析堆内存信息。

用法

jhat heap_dump_file

其中,heap_dump_file 是要分析的堆内存转储文件的路径。

示例

使用上一步生成的 heapdump.bin 文件

jhat  .\heapdump.bin

在这里插入图片描述

浏览器访问 http://localhost:7000,即可查看分析结果。

在这里插入图片描述
在这里插入图片描述

五、jstat 信息监视工具

用于监视 Java 虚拟机的各种运行时统计信息,例如堆内存使用情况、垃圾回收情况、类加载情况等。可以帮助开发人员实时监视 Java 进程的运行时统计信息,用于性能分析和调优。

用法

jstat [option] pid [interval [count]]
options参数选项说明如下:
	-class: 显示类加载、卸载信息。
	-compiler: 显示即时编译器统计信息。
	-gc: 显示垃圾回收统计信息。
	-gccapacity: 显示垃圾回收堆容量信息。
	-gccause: 显示垃圾回收统计信息,并包括垃圾回收原因。
	-gcnew: 显示新生代垃圾回收统计信息。
	-gcnewcapacity: 显示新生代堆容量信息。
	-gcold: 显示老年代垃圾回收统计信息。
	-gcoldcapacity: 显示老年代堆容量信息。
	-gcutil: 显示垃圾回收统计信息,包括垃圾回收占用时间、堆空间使用率等。

其中,option 是用于指定要监视的统计信息的选项,pid 是要监视的 Java 进程的 PIDinterval 是指定更新统计信息的时间间隔(以毫秒为单位),默认为 1 秒。count 是指定更新统计信息的次数,默认为无限次。

示例

以默认的时间间隔和次数,查看 PID21592Java 进程的垃圾回收信息。

jstat -gc 21592

在这里插入图片描述

1 秒的时间间隔,显示 PID21592 的 Java 进程的垃圾回收信息,共更新 10 次。

jstat -gcutil 21592 1000 10

在这里插入图片描述

六、jstack 线程分析工具

用于生成 Java 进程的线程转储信息,以便分析 Java 进程的线程状态、堆栈信息等,通常用于诊断线程死锁、线程等待等问题。

用法

jstack pid

示例

查看 PID 为 21592Java 进程的线程转储信息,并将结果输出到命令行终端

jstack 21592

在这里插入图片描述

jstack 将打印出线程的状态、线程 ID、线程堆栈信息等内容,以及任何锁定对象的相关信息。这些信息可以帮助开发人员分析 Java 进程中的线程情况,识别潜在的线程问题,例如死锁、线程阻塞等。

jstack 还支持一些选项,例如 -l 可以输出额外的锁定信息,-F 可以强制生成线程转储信息,即使 Java 进程不响应。

七、jcmd 命令执行工具

用于执行各种诊断命令和操作 Java 进程的功能。它可以列出当前系统中所有正在运行的 Java 进程、显示 Java 进程的基本信息、执行各种诊断命令以及执行其他操作。提供了丰富的诊断功能,用于监控、诊断和管理 Java 进程。

用法

jcmd [pid | main-class | command] [options]

其中,pid 是要操作的 Java 进程的 PIDmain-class 是要操作的 Java 进程的主类名,command 是要执行的诊断命令。options 是命令的选项和参数。

示例

查看当前系统中所有正在运行的 Java 进程的 PID 和主类名。

jcmd

在这里插入图片描述

查看 PID21592Java 进程的 JVM 启动参数。

jcmd 21592 VM.flags

在这里插入图片描述

除了上述示例中列出的命令外,jcmd 还支持其他一些命令,例如 GC.heap_dump 可以生成堆内存转储文件,Thread.print 可以打印线程堆栈信息等。你可以通过输入 jcmd help 查看所有可用的命令和选项。

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

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

相关文章

官网:所谓高大上,无非是把核心突出到了极致。

2023-10-30 14:37贝格前端工场 企业官网建设&#xff0c;客户往往要求高大上&#xff0c;但是很多设计师对高大上的解读存在了偏差&#xff0c;以至于设计的网站客户不满意&#xff0c;其实抓住官网所要展现的核心点&#xff0c;把核心点展现到极致&#xff0c;就是高大上。 …

Bee Mobile组件库重磅升级

Bee Mobile组件库重磅升级&#xff01; 丰富强大的组件移动预览快速上手create-bee-mobile Bee Mobile组件库重磅升级&#xff01; Bee Mobile组件库最新 v1.0.0 版本&#xff0c;支持最新的 React v18。 主页&#xff1a;Bee Mobile 丰富强大的组件 一共拥有50多个组件&…

果蔬作物疾病防治系统|基于Springboot的果蔬作物疾病防治系统设计与实现(源码+数据库+文档)

果蔬作物疾病防治系统目录 目录 基于Springboot的果蔬作物疾病防治系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、果蔬百科列表 2、公告信息管理 3、公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

Opencv 绘制线段、矩形、圆形、多边形操作

1、前言 OpenCV提供了许多用于绘制图形的方法 包括绘制线段的line()方法、绘制矩形的 rectangle()方法、绘制圆形的 circle()方法、绘制多边形的 polylines()方法和绘制文字的 putText()方法 本章将依次对上述各个方法进行讲解&#xff0c;并作出相应实验。 因为 OpenCV 中的…

ES分页查询的最佳实践:三种方案

Elasticsearch&#xff08;ES&#xff09;中进行分页查询时&#xff0c;最佳实践取决于具体的使用场景和需求。 以下是对每种分页方法的简要分析以及它们适用的情况&#xff1a; 1. From Size 最常见且直观的方法&#xff0c;通过from参数指定跳过多少条记录&#xff0c;si…

服务器-->网站制作-->接口开发,一篇文章一条龙服务(2)

作者&#xff1a;q: 1416279170v: lyj_txd前述&#xff1a;本人非专业&#xff0c;兴趣爱好自学自研&#xff0c;很多没有说清楚的地方见谅&#xff0c;欢迎一起讨论的小伙伴~ 上期回顾&#xff0c;了解 服务器&#xff0c;网站制作&#xff0c;接口开发之见的关系&#xff0c…

UDP与TCP:了解这两种网络协议的不同之处

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

挑战杯 基于设深度学习的人脸性别年龄识别系统

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习机器视觉的…

使用 Python 字典向 SQLite 插入数据

将Python字典数据插入SQLite数据库中其实有很多好处&#xff0c;例如使用字典的结构可以简化插入数据的代码&#xff0c;使其更加紧凑和易于理解。这降低了代码的复杂性&#xff0c;并使代码更易于维护。那么在我们日常使用中会有哪些问题呢&#xff1f;一起看看我是如何解决的…

子类的继承性

继承性 类有两种重要的成员&#xff1a; 成员变量和方法 子类的成员 ① 自己声明定义 ②从父类继承 ① 成员变量的继 把继承来的变量作为 自己的一个成员变量 &#xff08;如同在子类中直接声明一样&#xff09;&#xff1b; 可被子类中自定义的任何实例方法操作 。 ② 方法…

装windows11+centos双系统时遇到问题及解决方法

从u盘启动提示linpus lite has been blocked 首先下载iso镜像文件&#xff0c;制作u盘启动工具&#xff0c;进行启动&#xff0c;这里进入bios界面进行启动项选择后&#xff0c;虽然已经将usb作为首要启动值 却会出现上图所示被“block”情形 需要在bios界面security选项&…

启发式算法:遗传算法

文章目录 遗传算法-引例交叉变异遗传算法遗传算法流程遗传算法应用遗传算法-引例 在一代代演化过程中,父母扇贝的基因组合产生新扇贝,所以遗传算法会选择两个原有的扇贝,然后对这两个扇贝的染色体进行随机交叉形成新的扇贝。迭代演化也会造成基因突变,遗传算法让新产生扇贝…

小程序网页view多行文本超出隐藏或显示省略号

实现效果&#xff1a; 限制两行&#xff0c;超出即显示省略号 实现&#xff1a;话不多说&#xff0c;展示代码 关键代码 .box{ width:100rpx; overflow:hidden; text-overflow: ellipsis;//超出省略号 display:-webkit-box; -webkit-line-clamp: 2;//显…

uniapp让输入框保持聚焦状态,不会失去焦点

使用场景&#xff1a;当输入框还有发送按钮的时候&#xff0c;点击发送希望软键盘不消失&#xff0c;还可以继续输入&#xff0c;或者避免因输入图片标签造成的屏闪问题 多次尝试后发现一个很实用的方法&#xff0c;适用input输入框和editor输入框 解决办法&#xff1a;把cli…

python基础——条件判断和循环【if,while,for,range】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下条件判断语句if和循环语句while&#xff0c;for在python中需要注意的地方。 建议已有一定了解&#xff08;对语句的执行逻辑清楚&#xff09;的读者观看&#xff0c;如果对条件判断和循环的执行逻辑不太清楚&#xff0c;也可…

Elasticsearch架构原理

一. Elasticsearch架构原理 1、Elasticsearch的节点类型 在Elasticsearch主要分成两类节点&#xff0c;一类是Master&#xff0c;一类是DataNode。 1.1 Master节点 在Elasticsearch启动时&#xff0c;会选举出来一个Master节点。当某个节点启动后&#xff0c;然后使用Zen D…

kali当中不同的python版本切换(超简单)

kali当中本身就是自带两个python版本的 配置 update-alternatives --install /usr/bin/python python /usr/bin/python2 100 update-alternatives --install /usr/bin/python python /usr/bin/python3 150 切换版本 update-alternatives --config python 0 1 2编号选择一个即可…

2024护网面试题精选(二)完

0x02. 内网渗透篇 00- 内网渗透的流程 拿到跳板后&#xff0c;先探测一波内网存活主机&#xff0c;用net user /domian命令查看跳板机是否在域 内&#xff0c;探测存活主机、提权、提取hash、进行横向移动&#xff0c;定位dc位置&#xff0c;查看是否有能直接提权域 管的漏洞…

springboot整合shiro的实战教程(二)

文章目录 整合思路1.创建springboot项目2.引入依赖3.创建Shiro Filter0.创建配置类1.配置shiroFilterFactoryBean2.配置WebSecurityManager3.创建自定义Relm4.配置自定义realm5.编写控制器跳转至index.html6.加入资源的权限控制7. 常见过滤器 登录认证实现登录界面开发controll…

复盘-PPT

调整PPT编号起始页码在设计→幻灯片大小 设置所有以及文本项目符号 ## 打开母版&#xff0c;找到对应级别设置重置 当自动生成的smartart图形不符合预期时