jvm性能监控常用工具

在java的/bin目录下有许多java自带的工具。
在这里插入图片描述
我们常用的有

基础工具

jar:创建和管理jar文件
java:java运行工具,用于运行class文件或jar文件
javac:java的编译器
javadoc:java的API文档生成工具

性能监控和故障处理

jps
jstat
jinfo
jmap
hstack

可视化故障处理工具

JConsole
JHSDB

jps:用于显示当前运行的Java进程的PID

jps命令显示的Java进程ID(PID)就是操作系统中的进程ID(Process ID)。这是每个进程在操作系统中的唯一标识符。jps列出的PID与ps、top等操作系统工具列出的PID是一致的。

常用参数

-l:显示主类的全限定名或JAR文件的完整路径。

jps -l
示例输出:
12345 com.example.MyJavaApp
67890 sun.tools.jps.Jps

-v:显示传递给Java虚拟机的参数。

jps -v
示例输出:
12345 MyJavaApp -Xmx1024m
67890 Jps -Dapplication.home=/usr/lib/jvm/java-14

-m:显示传递给主类的参数。

jps -m
示例输出:
12345 MyJavaApp arg1 arg2
67890 Jps

jstat:虚拟机的类加载信息,内存信息,垃圾回收,运行时编译的统计信息

查看类加载信息

jstat -class 12345
输出示例:

  Loaded  Bytes  Unloaded  Bytes  Time(ms)1000  5000     50     200      300
查看垃圾回收信息:jstat -gc 12345
 S0C    S1C    S0U    S1U      EC       EU        OC       OU     MC       MU     CCSC     CCSU    YGC     YGCT    FGC    FGCT     GCT   
1024.0 1024.0  512.0   0.0   8192.0   4096.0   10240.0   8192.0  5120.0   2048.0  640.0    320.0      5    0.050     2    0.100    0.150

S0C (Survivor 0 Capacity):第一个幸存区的容量,单位是KB。
S1C (Survivor 1 Capacity):第二个幸存区的容量,单位是KB。
S0U (Survivor 0 Utilization):第一个幸存区的已使用空间,单位是KB。
S1U (Survivor 1 Utilization):第二个幸存区的已使用空间,单位是KB。
EC (Eden Capacity):Eden区的容量,单位是KB。
EU (Eden Utilization):Eden区的已使用空间,单位是KB。
OC (Old Capacity):老年代的容量,单位是KB。
OU (Old Utilization):老年代的已使用空间,单位是KB。
MC (Metaspace Capacity):元数据区的容量,单位是KB。
MU (Metaspace Utilization):元数据区的已使用空间,单位是KB。
CCSC (Compressed Class Space Capacity):压缩类空间的容量,单位是KB。
CCSU (Compressed Class Space Utilization):压缩类空间的已使用空间,单位是KB。
YGC (Young Generation GC Count):年轻代垃圾收集的次数。
YGCT (Young Generation GC Time):年轻代垃圾收集的总时间,单位是秒。
FGC (Full GC Count):完全垃圾收集的次数。
FGCT (Full GC Time):完全垃圾收集的总时间,单位是秒。
GCT (Total GC Time):垃圾收集的总时间(年轻代和完全垃圾收集的总和),单位是秒。

每1秒输出一次gc快照,输出5次:jstat -gcutil 30500 1000 5

jstat -gcutil命令的输出以百分比形式显示各个内存区域的利用率(即已使用内存占总内存的比例)
在这里插入图片描述

jvm的内存配置情况:jstat -gccapacity 30500
 NGCMN    NGCMX     NGC    S0C    S1C    EC      OGCMN    OGCMX    OGC       OC       MCMN     MCMX      MC512.0  10240.0   8192.0  1024.0  1024.0  6144.0  10240.0  20480.0  10240.0  10240.0  512.0  1024.0  512.0

NGCMN:新生代最小容量。
NGCMX:新生代最大容量。
NGC:当前新生代容量。
S0C、S1C:第一个和第二个幸存区的容量。
EC:Eden区的容量。
OGCMN:老年代最小容量。
OGCMX:老年代最大容量。
OGC:当前老年代容量。
OC:当前老年代容量(通常和OGC相同)。
MCMN:元数据区最小容量。
MCMX:元数据区最大容量。
MC:当前元数据区容量。

jstat -gcold,-gcnew等

jinfo

jvm的常用参数

内存

jvm的最大使用内存,最小使用内存
jvm的新生代的最大最小使用内存
元空间的最大最小使用内存
栈的最大最小内存

性能调优相关参数:

-XX:ParallelGCThreads: 设置并行垃圾收集器的线程数。
-XX:ConcGCThreads: 设置并发垃圾收集器的线程数。
-XX:SurvivorRatio: 设置新生代中Eden区与Survivor区的比例。
-XX:MaxTenuringThreshold: 设置对象在新生代中经过多少次GC后进入老年代。

jinfo -flags:显示所有JVM标志及其值

VM Flags:
-XX:CICompilerCount=12 //设置即时编译器(JIT)线程数为12,用于提升编译性能。
-XX:ConcGCThreads=3 //分层编译最多只进行到级别1,通常意味着只进行简单的编译优化。
-XX:+UseG1GC //启用 G1 垃圾收集器
-XX:G1ConcRefinementThreads=13 //设置 G1 垃圾收集器的并发精炼线程数为13,用于处理记忆集的并发更新
-XX:G1EagerReclaimRemSetThreshold=16 //设置 G1 垃圾收集器在回收记忆集时的早期阈值
-XX:G1HeapRegionSize=2097152 //设置 G1 垃圾收集器堆区域的大小为2MB
-XX:G1RemSetArrayOfCardsEntries=16
-XX:G1RemSetHowlMaxNumBuckets=8
-XX:G1RemSetHowlNumBuckets=8
-XX:GCDrainStackTargetSize=64
-XX:InitialHeapSize=266338304 //堆大小
-XX:+ManagementServer
-XX:MarkStackSize=4194304
-XX:MaxHeapSize=4236247040
-XX:MaxNewSize=2541748224
-XX:MinHeapDeltaBytes=2097152
-XX:MinHeapSize=8388608
-XX:NonProfiledCodeHeapSize=0
-XX:-ProfileInterpreter
-XX:ProfiledCodeHeapSize=0
-XX:SoftMaxHeapSize=4236247040
-XX:TieredStopAtLevel=1
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:+UseFastUnorderedTimeStamps
-XX:-UseLargePagesIndividualAllocation

jinfo -flag MaxHeapSize 30500:查看特定标志的值

在这里插入图片描述

jinfo -flag MaxHeapSize=2147483648 12345:修改特点的标志值

jmap:查看jvm内存使用情况

1. 生成堆转储(Heap Dump)

使用 jmap 可以生成 Java 进程的堆转储文件,以便后续分析和诊断内存问题。

jmap -dump:format=b,file=<dump_file_path>
-dump:format=b,file=<dump_file_path>: 指定生成堆转储文件的格式为二进制(b),并指定转储文件的路径。
: Java 进程的进程号(PID)。
例如,要生成一个名为 heapdump.bin 的堆转储文件,可以执行以下命令:

jmap -dump:format=b,file=heapdump.bin

2. 查看堆内存使用情况

可以使用 jmap 查看堆内存的使用情况和统计信息,包括堆的大小、使用量、空闲量等。

jmap -heap
例如:

jmap -heap

3. 查看堆中对象统计信息

jmap 可以输出堆中各个类的实例数量和占用内存等信息。
jmap -histo
例如:
jmap -histo

4. 查看类加载器信息

可以使用 jmap 查看已加载类的详细信息和类加载器的关系。
jmap -clstats
例如:
jmap -clstats

jstack:线程状态,定位线程死锁、查看线程状态、分析线程间的互相等待

查看所有线程

jstack 30500

检测死锁

jstack -l -F

jConsole

JHSDB

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

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

相关文章

鸿蒙应用更新跳转到应用市场

鸿蒙没有应用下载安装&#xff0c;只支持跳转到应用市场更新 gotoMarket(){try {const request: Want {parameters: {// 此处填入要加载的应用包名&#xff0c;例如&#xff1a; bundleName: "com.huawei.hmsapp.appgallery"bundleName: com.huawei.hmos.maps.app}}…

浅谈定时器之常数吞吐量定时器

浅谈定时器之常数吞吐量定时器 常数吞吐量定时器的主要目的是在JMeter测试中维持一个恒定的吞吐量&#xff08;通常是每分钟的请求数或事务数&#xff09;&#xff0c;从而确保测试能够以预期的负载水平运行。这对于模拟特定的用户访问模式、进行稳定性测试、负载测试以及压力…

171. Excel 表列序号

给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: columnTitle “A” 输出: 1 示例 2: 输入: columnTitle “…

量化交易 - 策略回测

策略回测 1、什么是策略回测&#xff1f;2、策略回测的作用3、策略回测系统概述3.1策略回测中相关的指标介绍3.2量化交易策略的资金容量3.3 完整的策略回测系统包含哪些内容 1、什么是策略回测&#xff1f; 策略回测&#xff0c;也称之为策略回溯测试&#xff0c;是指利用交易…

北京酒店订房小程序开发的优势与主要功能

随着我国经济与交通的飞速发展&#xff0c;人们出行的次数越来越多&#xff0c;频率也越来越快。无论是出差还是出游&#xff0c;人家对外出酒店的舒适度与便捷度的要求也越来越高。为了满足人们对于酒店的新需求&#xff0c;北京酒店订房小程序与互联网技术相结合&#xff0c;…

Vue监听localstorage变化的方法详解(待更新)

我现在用token做登录身份验证&#xff0c;使用到localStorage&#xff0c;在computed中编写“函数”&#xff0c;根据localStorage的值&#xff0c;在导航栏显示不同的链接&#xff0c;我发现computed中编写的“函数”不会监控localStorage取值的变化 Vue 仅可以对其管理的数据…

pbootcms后台获取前端表单留言页面url

pbootcms在线留言表单&#xff0c;用户在网页前端提交表单成功后&#xff0c;在网站后台如何获取表单留言页面的url这个参数呢&#xff1f;下面举例说明&#xff1a;首先&#xff0c;我们在PBootcms后台对应的表单&#xff0c;添加需要记录的表单字段&#xff0c;例如 添加liuy…

Java面试题:对比HTTP的GET和POST方法,并讨论它们的使用场景

HTTP的GET和POST方法是用于在客户端和服务器之间交换数据的两种基本请求方法。它们有不同的特性和使用场景。 GET方法 特性 数据在URL中传输&#xff1a;GET请求的数据附加在URL的末尾&#xff0c;通过查询字符串传输。数据长度限制&#xff1a;由于浏览器和服务器对URL长度…

算法刷题笔记 双链表(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 实现一个双链表&#xff0c;双链表初始为空&#xff0c;支持5种操作&#xff1a; 在最左侧插入一个数&#xff1b;在最右侧插入一个数&#xff1b;将第k个插入的数删除&#xff1b;在第k个插入的数左侧插入一个数&#xff1b;在第k…

免费开源AI生产力工具:内置专属ChatGPT、一键智能处理图片和视频(擦除水印、卡通漫画、无损放大、插值补帧、智能修复、3D转制、上色修复、合成整理)

AI 生产力工具 免费开源&#xff0c;提升用户生产力&#xff0c;保障隐私和数据安全。提供高效便捷的AI解决方案&#xff0c;包括但不限于&#xff1a;内置专属ChatGPT、一键批量智能处理图片和视频等。 主要特点 免费开源&#xff1a;免费使用&#xff0c;源代码开放&#…

odoo 安装/升级/卸载调用方法

原生升级/卸载 调用的方法记录 安装模块 button_immediate_install()升级模块 button_immediate_upgrade()卸载模块 button_immediate_uninstall()shell语句 安装/升级/卸载

大数据面试题之Spark(3)

目录 Spark的哪些算子会有shuffle过程? Spark有了RDD&#xff0c;为什么还要有Dataform和DataSet? Spark的RDD、DataFrame、DataSet、DataStream区别? Spark的Job、Stage、Task分别介绍下&#xff0c;如何划分? Application、job、Stage、task之间的关系 Stage内部逻辑…

性价比高真无线蓝牙耳机有哪些?性价比真无线蓝牙耳机推荐

目前真无线蓝牙耳机的音质和性能已经越来越接近甚至超越传统有线耳机。然而&#xff0c;市面上的TWS耳机品牌和型号繁多&#xff0c;价格也从几十元到几千元不等&#xff0c;性价比自然成了消费者选择时的重要考量因素&#xff0c;究竟哪些真无线蓝牙耳机既能够提供满意的音质和…

【408考点之数据结构】顺序查找和折半查找

顺序查找和折半查找 在数据处理中&#xff0c;查找操作是非常重要的一部分。顺序查找和折半查找是两种常见的查找方法&#xff0c;它们各有优缺点和适用场景。以下是对这两种查找方法的详细介绍。 1. 顺序查找 定义&#xff1a;顺序查找&#xff08;Sequential Search&#…

前沿重器[52] | 聊聊搜索系统5:召回:检索、粗排、多路召回

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

大数据的魔方:Kylin Cube构建全解析

&#x1f4d8; 大数据的魔方&#xff1a;Kylin Cube构建全解析 在大数据的浩瀚海洋中&#xff0c;Apache Kylin以其卓越的分析能力&#xff0c;为企业提供了一个强大的数据立方体&#xff08;Cube&#xff09;解决方案。Cube作为Kylin的核心概念之一&#xff0c;它的构建过程直…

C++Primer Plus 第十四章代码重用:总结

CPrimer Plus 第十四章代码重用&#xff1a;总结 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;CPrimer Plus 第十四章代码重用&#xff1a;总结 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff…

怎么把别人git项目保存为自己的

怎么把别人git项目保存为自己的 1.操作笔记1.1 先在自己的Git仓库里,把别人的项目克隆到本地。然后打开Git Bash或者其他的终端工具,然后使用以下命令克隆项目:1.2. 进入到本地仓库中,修改远程仓库的地址,将其指向自己的Git仓库。进入到项目的目录中,然后执行以下命令:1…

Windows定时任务执行脚本

场景&#xff1a;由于网络波动原因导致云数据库没连接上&#xff0c;从而导致某个流程引擎链接不上数据库从而导致该流程引擎服务挂了&#xff0c;网络恢复后 数据库链接正常&#xff0c;但是该引擎服务还是中止状态。 解决方案&#xff1a;在Windows中新建一个定时任务&#…

为用户转出并处理MODIS NDVI数据案例过程记述,希望对大家有用!

最近为用户转出和处理了一次MODIS NDVI数据&#xff0c;我将过程做了个总结供大家参考&#xff01;希望能帮助到一些下载和处理数据的朋友! 使用工具为三个&#xff1a;地图资源工具 和 GIS数据转换器-栅格&#xff0c;qgis。 1.选择【数据下载功能】&#xff0c;然后选择MO…