java-jvm监控工具

目录

jstack

jstat

jmap

jhat


jstack

描述:jstack命令为指定的Java进程、核心文件或远程调试服务器打印Java线程的Java堆栈跟踪
语法:

jstack [ options ] pid 
jstack [ options ] executable core 
jstack [ options ] [ server-id@ ] remote-hostname-or-IP 

参数:

executable: 从中生成核心转储的Java可执行文件。 
core: 要为其打印堆栈跟踪的核心文件 
remote-hostname-or-IP: 远程调试服务器主机名或IP地址。 
server-id: 在同一远程主机上运行多个调试服务器时要使用的可选唯一ID 
options: 
 -F 强制线程转储。当jstack没有响应时使用(进程挂起) 
 -m 打印java和本机帧(混合模式) 
 -l long listing. 打印有关锁的附加信息 

查看线程堆栈:

查看cpu占用高进程: top 
查看cpu占用高线程: top -H -p 
转换线程ID(thread_id): printf "%x\n" [thread_id]
查看高线程堆栈信息: jstack | grep -A 50

jstat

描述:监视Java虚拟机(JVM)统计信息。
语法:

jstat -options vmid [ interval[s|ms] [ count ]

参数:


vmid 虚拟机标识符,它是指示目标JVM的字符串。一般语法如下:[protocol:][//]lvmid[@hostname[:port]/servername]
interval [s|ms] 以指定单位(秒或毫秒)表示的采样间隔。默认单位为毫秒。一定是正整数。指定时,jstat命令会在每个间隔生成其输出。
count 要显示的样本数。默认值是无穷大,这会导致jstat命令显示统计信息,直到目标JVM终止或jstat命令终止。此值必须是正整数
options:
 -help 显示帮助消息。
 -options 显示选项列表。请参见输出选项。
 -class 显示有关类装入器行为的统计信息。
 -compiler 显示有关Java HotSpot VM实时编译器行为的统计信息。
 -gc 显示有关垃圾收集堆行为的统计信息。
 -gccapacity 显示有关各代及其相应空间的容量的统计信息。
 -gccause 显示有关垃圾收集统计信息的摘要(与-gcutil相同),最后和当前垃圾回收事件的原因。
 -gcnew 显示新生代行为的统计信息。
 -gcnewcapacity 显示有关新生代及其相应空间的大小的统计信息。
 -gcold 显示有关老年代行为的统计信息和元空间统计信息。
 -gcoldcapacity 显示有关老年代大小的统计信息。
 -gcmetacapacity 显示有关元空间大小的统计信息。
 -gcutil 显示有关垃圾收集统计信息的摘要。
 -printcompilation 显示JavaHotSpot VM编译方法统计信息。
 -h n 每n个样本(输出行)显示一个列标题,其中n是正整数。默认值为0,显示列标题数据的第一行。
 -t 将时间戳列显示为输出的第一列。时间戳是自目标JVM的开始时间起的时间。
 -JjavaOption 将javaOption传递给Java应用程序启动程序。例如,-J-Xms48m将启动内存设置为48mb。

解析查询信息:


-class:
 Loaded: 加载的类数量.
 Bytes: 加载的KB数。
 Unloaded: 卸载的类数。
 Bytes: 卸载的KB数。
 Time: 执行类加载和卸载操作所花费的时间。
-compiler:
 Compiled: 执行的编译任务数。
 Failed: 失败的编译任务数。
 Invalid: 无效的编译任务数。
 Time: 执行编译任务所花费的时间。
 FailedType: 上次失败编译的编译类型。
 FailedMethod: 上次失败编译的类名和方法。
-gc 
 S0C: 当前幸存者空间0 容量(kB)。
 S1C: 当前幸存者空间1 容量(kB)。
 S0U: 幸存者空间0利用率(kB)。
 S1U: 幸存者空间1利用率(kB)。
 EC: 当前伊甸区空间容量(kB)。
 EU: 伊甸区空间利用率(kB)。
 OC: 当前老年代空间容量(kB)。
 OU: 老年代空间利用率(kB)。
 MC: 元空间容量(kB)。
 MU: 元空间利用率(kB)。
 CCSC: 压缩类空间容量(kB)。
 CCSU: 使用的压缩类空间(kB)。
 YGC: 年轻一代垃圾回收事件数。
 YGCT: 年轻一代的垃圾收集时间。
 FGC: Full GC事件数。
 FGCT: Full GC收集时间。
 GCT: 总垃圾收集时间。
-gccapacity
 NGCMN: 最小新生代容量(kB)。
 NGCMX: 最大新生代容量(kB)。
 NGC: 当前新生代容量(kB)。
 S0C: 当前幸存者空间0 容量(kB)。
 S1C: 当前幸存者空间1 容量(kB)。
 EC: 当前伊甸区空间容量(kB)。
 OGCMN: 最小老年代容量(kB)。
 OGCMX: 最大年代容量(kB)。
 OGC: 当前老年代容量(kB)。
 OC: 当前老年代空间容量(kB)。
 MCMN: 最小元空间容量(kB)。
 MCMX: 最大元空间容量(kB)。
 MC: 元空间容量(kB)。
 CCSMN: 压缩类空间最小容量(kB)。
 CCSMX: 压缩类空间最大容量(kB)。
 CCSC: 压缩类空间容量(kB)。
 YGC: 年轻代GC事件数。
 FGC: FULL GC事件数。
-gccause
 LGCC: 上次垃圾回收的原因
 GCC: 当前垃圾回收的原因
-gcnew
 TT: Tenuring threshold. 年轻代晋升老年代(年龄)阈值
 MTT: Maximum tenuring threshold. 年轻代晋升老年代最大(年龄)阈值
 DSS: Desired survivor size (kB). (一个)survivor区的大小*TargetSurvivorRatio/100(TargetSurvivorRatio默认50))
 三者关系: 从所有年龄=0的对象占的空间开始累加,直到加上年龄=n的所有对象的空间之后的空间容量大于DSS时,
 TT=n<MTT?n:MTT
-gcnewcapacity
 S0CMX: 最大幸存者空间0容量(kB)。
 S1CMX: 最大幸存者空间1容量(kB)。
 ECMX: 最大伊甸区空间容量(kB)。
-gcutil
 S0: Survivor space 0 区已使用空间的百分比
 S1: Survivor space 1 区已使用空间的百分比
 E: Eden space 区已使用空间的百分比
 O: Old space 区已使用空间的百分比
 M: 元空间利用率占空间当前容量的百分比。
 CCS: 压缩类已使用空间的百分比
-printcompilation
 Compiled: 最近编译的方法执行的编译任务数。
 Size: 最近编译的方法的字节码的字节数。
 Type: 最近编译的方法的编译类型。
 Method: 类名和方法名,用于标识最近编译的方法

jmap

描述:打印进程、核心文件或远程调试服务器的共享对象内存映射或堆内存详细信息。
语法:

jmap [ options ] pid 
jmap [ options ] executable core 
jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP 

参数:

executable: 从中生成核心转储的Java可执行文件。
core: 要为其打印堆栈跟踪的核心文件
remote-hostname-or-IP: 远程调试服务器主机名或IP地址。
server-id: 在同一远程主机上运行多个调试服务器时要使用的可选唯一ID
options:
 -dump:[live,] format=b, file=filename: 将hprof二进制格式的Java堆转储到filename。live子选项是可选的,但是当指定时,只转储堆中的活动对象。要浏览堆转储,可以使用jhat命令读取生成的文件。
 -finalizerinfo 打印有关等待完成的对象的信息. 
 -heap 打印所使用的垃圾收集的堆摘要、头配置和按生成的堆使用情况。此外,还打印了插入字符串的数量和大小。 
 -histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量. 
 -clstats 打印Java堆的类装入器统计信息。对于每个类装入器,都会打印其名称、活动程度、地址、父类装入器以及装入的类的数量和大小。 
 -F 强制。当pid没有响应时,将此选项与jmap-dump或jmap-histo选项一起使用。此模式不支持live子选项。 
 -J 指定传递给运行jmap的JVM的参数 
说明: dump,clstats耗时并且会暂停应用, histo:live会触发full gc 

解析 -heap 查询信息:

using parallel threads in the new generation. :在新一代中使用并行线程。
using thread-local object allocation. :本地线程分配
Concurrent Mark-Sweep GC :cms gc
Heap Configuration:堆配置情况
 MinHeapFreeRatio最小堆使用比例
 MaxHeapFreeRatio最大堆可用比例
 MaxHeapSize最大堆空间大小
 NewSize新生代分配大小
 MaxNewSize最大可新生代分配大小
 OldSize老年代大小
 NewRatio新生代比例
 SurvivorRatio新生代与suvivor的比例
 MetaspaceSize 元空间
 CompressedClassSpaceSize 压缩类空间大小
 MaxMetaspaceSize 最大元空间大小
 G1HeapRegionSize         G1区域的大小
Heap Usage:堆使用情况
New Generation (Eden + 1 Survivor Space):新生代(伊甸区Eden区 + 幸存区survior空间)
 capacity 容量
 used 已经使用大小
 free 剩余容量
 xx% used 使用比例
Eden Space: 伊甸区
From Space: survior1区
To Space: survior2区
concurrent mark-sweep generation: 老生代使用情况
43703 interned Strings occupying 4543800 bytes.

jhat

描述:命令解析Java堆转储文件并启动web服务器
语法:

jhat [ options ] heap-dump-file 

参数:

heap-dump-file:要浏览的Java二进制堆转储文件。对于包含多个堆转储的转储文件,可以指定, 例如,在文件名后面附加
options:
 -stack false|true 关闭跟踪对象分配调用堆栈。默认值是true。
 -refs false|true 关闭对对象引用的跟踪。默认值为true。默认情况下,返回指针是指向为堆中的所有对象计算指定的对象(如引用或传入引用)
 -port port-number 设置jhat HTTP服务器的端口。默认值为7000。
 -exclude exclude-file 指定列出了应当从可及的对象查询排除数据成员的文件
 -baseline exclude-file 指定基准堆转储。在具有相同的对象ID两个堆转储对象被标记为不是新对象。这是用于比较两个不同的堆转储有用。
 -debug int 设置此工具的调试级别。级别为0表示没有调试输出。为更详细的模式设置更高的值。
 -version 版本号
 -h, -help 显示帮助消息
 -Jflag 将标志传递给运行jhat命令的Java虚拟机。例如,-J-Xmx512m使用最大堆大小为512 MB。


 

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值