千家信息网

jvm监控工具jps,jstat,jstack,jmap的使用方法

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,在平常运维分析jvm的时候通常用到的工具的jps,jstat,jstack,jmap用于分析tomcat遇到的各种问题tomcat常见的问题有:OOM,线程死锁(lock dead),锁争用(lock
千家信息网最后更新 2025年12月02日jvm监控工具jps,jstat,jstack,jmap的使用方法

在平常运维分析jvm的时候通常用到的工具的jps,jstat,jstack,jmap用于分析tomcat遇到的各种问题

tomcat常见的问题有:

OOM,线程死锁(lock dead),锁争用(lock contention),Java消耗过多的CPU

可以通过以上工具进行分析

生产常用分析方法快速入口:

#jps --> 查看运行的java进程

#jstat -gc 进程pid --> 查看进程新生代老年代的内存使用情况,年轻代老年代垃圾收集次数及时间

#jstat -gccause 进程pid --> 查看进程垃圾收集原因

#jmap -heap 进程pid --> 查看进程堆内存具体使用情况

#jstack -l 进程pid --> 查看线程信息,用于分析线程争取,死锁造成tomcat假死的情况

jps:java虚拟机进程查看工具

jps [options] [hostid]

-m:输出传入main方法的参数

-l:显示main的完整类名

-v:显示为jvm虚拟机指定的参数

常用的组合:

#jps -m -l

#jps -m -l -v

[gcct1@localhost bin]$ jps -m -l -v5966 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/mnt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/mnt/tomcat/endorsed -Dcatalina.base=/mnt/tomcat -Dcatalina.home=/mnt/tomcat -Djava.io.tmpdir=/mnt/tomcat/temp7006 sun.tools.jps.Jps -m -l -v -Denv.class.path=.:/usr/java/jdk1.7.0_79/lib/dt.jar:/usr/java/jdk1.7.0_79/lib/tools.jar -Dapplication.home=/usr/java/jdk1.7.0_79 -Xms8m

jstat:jvm虚拟机运行时内存使用及垃圾回收情况监控

jstat -

-options:查看有哪些选项可以使用

-gc:使用此选项时,后面加java的进程号;例jstat -gc 27564 [1s](也可跟上多少时间显示一次)

S0C,S1C:表示第一个和第二个生存区的容量
S0U,S1U:表示第一个和第二个生存区的已使用的容量
EC,EU:表示eden区域的容量和已用量
OC,OU:表示老年代区的容量和已用量
PC,PU:表示持久代的内存容量和已用量
YGC,YGT:表示新生代的GC发生的次数和耗时
FGCT,FGCT:表示老年代Full GC发生的次数和耗时
GCT:表示总的GC耗时

-gccause:
LGCC:上次GC的原因
GCC:当前GC的原因

[gcct1@localhost bin]$ jstat -gc 5966 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   40960.0 36864.0  0.0   36850.3 253952.0 161159.5  109056.0   74574.4   53248.0 45852.6     19    1.672   3      2.193    3.865[gcct1@localhost bin]$ jstat -gccause 5966  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC                   0.00  99.96  63.76  68.38  86.11     19    1.672     3    2.193    3.865 Allocation Failure   No GC

jmap:查看堆内存使用情况,包括使用的GC算法,堆配置参数和各代堆内存使用情况,跟jstat有点类似

-heap:详细的输出堆内存的使用情况
-histo:显示所有的对象信息
-histo:live:手动触发full GC,然后显示存活的对象信息(常用于老年代调优)
-h:获取帮助信息
例:jmap -heap 5966 --> 查看堆内存的详细使用情况

[gcct1@localhost bin]$ jmap -heap 5966Attaching to process ID 5966, please wait...Debugger attached successfully.Server compiler detected.JVM version is 24.79-b02using thread-local object allocation.Parallel GC with 2 thread(s)Heap Configuration:   MinHeapFreeRatio = 0   MaxHeapFreeRatio = 100   MaxHeapSize      = 1019215872 (972.0MB)   NewSize          = 1310720 (1.25MB)   MaxNewSize       = 17592186044415 MB   OldSize          = 5439488 (5.1875MB)   NewRatio         = 2   SurvivorRatio    = 8   PermSize         = 21757952 (20.75MB)   MaxPermSize      = 85983232 (82.0MB)   G1HeapRegionSize = 0 (0.0MB)......

jstack:查看某个java进程内的线程堆栈信息

jstack [options] pid
-l:long listings(会输出完整的锁信息);jstack -l 进程号
-m:混合模式,即会输出java堆栈及C/C++堆栈信息

通过jstack可以查看线程争用,线程死锁等信息

进程 信息 内存 情况 线程 容量 年代 分析 输出 工具 原因 参数 垃圾 堆栈 次数 用量 死锁 方法 对象 常用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 日本硬件 软件开发 公安部 网络安全大赛 求生之路创建服务器 服务器里面有意思的指令 上海网络技术开发大概费用 一站式软件开发服务平台 斑马网络技术有限公司值得去吗 网络安全问题的问卷调查 武汉云时千正网络技术有限公司 浙江正泰网络技术怎么样 lt软件开发工程师 英雄联盟登录服务器无法连接 网站模板源文件和数据库 市监局网络安全事件应急预案 数据库控制中授权的英文表示 电信iptv无法连接认证服务器 网络技术工种工资高 dcom服务器进程 宿州云聚互联网科技有限公司 花雨落服务器ip 网络技术开发需要交什么税 网络安全的一般步骤 华为服务器删除操作系统 中小学网络安全会议记录范文 冬奥会网络安全兼职 数据库小数变成1 一个完整的网络安全体系包括什么 永劫无间服务器维护可以更新吗 网络安全法宣传文案 通过ip访问自己的服务器项目
0