jvm的各种性能检测工具

1: jvm 的性能诊断工具

1.1.:Jstat

这个的全称是JVM Statistics Monitoring Tool,说白了就是统计jvm的各种指标的,我们这边主要关注内存使用指标,一般我们后面要跟上pid的进程

java 复制代码
jstat -gc pid
jstat -gcutil pid

最终的这些结果命令如下,C 代表capacity,U代表使用情况:

1.2: jmap

这个的全称就是 Memory Map for Java,说白了就是查看java 堆内存的使用情况,主要查看java 堆内存里面的各种对象的个数和大小,使用方式如下所示:

java 复制代码
jmap -dump:format=b,file=heapdump.hprof <pid>
jmap -histo <pid>

第一个命令经常生成文件之后还是要借助工具比如JProfiler,VisualVM和Eclipse MAT

第二个命令就是看这个pid 对应的对象的个数和大小

1.3: jstack

这个说白了就是看进程中调用的各种栈,对于程序hung住排查调用的各种栈很有帮助,使用方法就是 jstack

1.4: jinfo

可以输出并修改运行时的java 进程的opts。用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法是jinfo -opt pid 如:查看2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 2788。

二:jmap,jstat 排查过程,

https://maimai.cn/article/detail?fid=1749959489\&efid=Q9mRBrC0YqvOahq4DBJzBA

2.1: 首先查看对应的堆内存使用的各种情况,堆内存溢出

2.2: 使用jmap 把file 搞出来,发现了大量的对象是ConcutrentHashMap

2.3: 继续排查发现是并发导致queryId 被改动了,把queryId 放在对应的operation 级别,不放在session级别

相关推荐
wuminyu9 小时前
Virtual Thread重投递至ForkJoinPool任务队列过程解析
java·linux·c语言·jvm·c++
2601_962071571 天前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
用户094248568031 天前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu1 天前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
2601_962071572 天前
类变量和全局变量的隔离性有什么区别?
java·开发语言·jvm
估值探索者2 天前
【Python量化系统工程实战 #01】数据存储选型 CSVSQLiteMySQL 对比与 SQLite 实战建库
开发语言·jvm·python·sqlite·api接口·数据api接口·股票数据api接口
打工仔折腾 AI2 天前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
用户094248568032 天前
第22章:JIT编译分层——Interpreter、C1、C2与热点探测
java·jvm
乌暮2 天前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试
长河3 天前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法