【JVM 工具命令】JAVA程序线上问题诊断,JVM工具命令的使用,jstat, jstack,jmap命令的使用

【JVM 工具命令】JAVA程序线上问题诊断,JVM工具命令的使用,jstat, jstack,jmap命令的使用

1. JVM监控工具: Jstat命令

通过这个命令查询java程序,gc的情况

jstat -gcutil {pid} 5000 12

· 5000 表示5000毫秒刷新一次

· 12 表示统计12次

· O这一列 达到100就会触发fgc,我们优化jvm就是尽量减少jvm 进行fgc的次数

· FGC这一列表示fullgc的次数

· FGCT这一列表示累计进行fullgc的耗时,第三次fgc的时间减去第二次fgc的时间就是第三次fgc花费的时间。0.152-0.125

通过jstat命令我们发现问题后就可以通过下面的jstack命令来定位java的哪个线程导致的具体问题。

2. JVM监控工具:Jstack命令

Jstack {pid} -- 查看堆栈信息

Jstack {pid} | grep {xid} -A 30 -- 查看堆栈中指定的某个线程的日志信息。 {xid} 必须是十六进制的线程id

Jstack命令只会打印一次信息,可以写下面的一个脚本,来持续输出线程日志信息

3. JVM监控工具: JMap Histo

JMap命令会触发 full gc,生产环境中需要注意使用。

jmap -histo:live {pid} 通过这个命令观察内存中最多的对象, 判断内存中积累的数据,监视内存中当前存活的对象内存占用情况。

jmap -histo:live pid 命令却不知道这些对象具体的值,可以通过 jmap -heapdump 命令

4. JVM监控工具: JMap -heapdump

jmap -dump:live, format=b, file=/root/tomcat.data {pid} 通过这个命令 输出当前内存中的对象数据。

jmap命令都会出发fgc。 jvm优化就是优化减少fgc次数,同时减少fgc的时间。

相关推荐
消失的旧时光-19432 分钟前
401 自动刷新 Token 的完整架构设计(Dio 实战版)
开发语言·前端·javascript
wadesir6 分钟前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
我是Superman丶7 分钟前
《Spring WebFlux 实战:基于 SSE 实现多类型事件流(支持聊天消息、元数据与控制指令混合传输)》
java
tap.AI7 分钟前
RAG系列(二)数据准备与向量索引
开发语言·人工智能
廋到被风吹走20 分钟前
【Spring】常用注解分类整理
java·后端·spring
阿蒙Amon20 分钟前
C#每日面试题-重写和重载的区别
开发语言·c#
是一个Bug24 分钟前
Java基础20道经典面试题(二)
java·开发语言
Z_Easen27 分钟前
Spring 之元编程
java·开发语言
liliangcsdn33 分钟前
python下载并转存http文件链接的示例
开发语言·python
我命由我1234542 分钟前
SVG - SVG 引入(SVG 概述、SVG 基本使用、SVG 使用 CSS、SVG 使用 JavaScript、SVG 实例实操)
开发语言·前端·javascript·css·学习·ecmascript·学习方法