1.jps(JVM Process Status Tool):
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class ,main()所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID).
image.png
因为jsp命令可以获取到LVMID,所以平时也经常会用到,因为大多数命令会需要这个LVMID。
jps命令格式
jps [options] [hostid]
jps工具主要选项
image.png
2.jstat(JVM Statistics Monitoring Tool)
是用来监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行数据,在没有GUI图形工具,只提供了纯文本控制台环境的服务器上,他僵尸运行期定位虚拟机性能问题的首选工具。
命令格式
jstat [ option vmid [interval [s|ms] [count] ] ]
interval 和 count代表查询间隔时间和次数
option代表这用户需要查询的信息,主要分3类:类装载,垃圾收集,运行期编译状态。
image.png
查看GC
image.png
S0C:第一个survivor的大小
S1C:第二个survivor的大小
S0U:第一个survivor的使用大小
S1U:第二个survivor的使用大小
EC:eden区的大小
EU:eden区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
image.png
Loaded:加载class的数量
Bytes:所占用空间大小
Unloaded:未加载数量
Bytes:未加载占用空间
Time:时间
image.png
Compiled:编译数量。
Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法
3.jinfo:java配置信息工具
jinfo的作用是实时的查看和调整虚拟机各项参数
命令格式
jinfo [option] pid
jinfo -flags 3337
查看正在运行的Java程序的扩展参数信息
image.png
jinfo -sysprops 3337
image.png
---------------------------------------------------------------------------------------------------------------4.jmap java 内存映像工具
jmap命令用于生成堆转存储快照(dump 文件),还可以查看finalize执行队列,Java堆和永久代详细信息,如空间使用率,当前用的哪种收集器等
命令格式
jmap [option] vmid
image.png
5.jhat:虚拟机堆转储快照分析工具
jhat命令与jmap搭配使用,来分析jmap生成的堆转存储快照.jhat内置一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以再浏览器中查看
6.jstack:Java堆栈跟踪工具
jstack命令用于生成虚拟机当前时刻的线程快照(threaddump或者javacore文件).
线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因.
命令格式
jstack [option] vmid
image.png
JVM可视化监视
1、JConsole --jdk1.5即提供
Java监控与管理控制台,windows下双击jdk安装目录bin下的jconsole.exe启动,可以监控本地java虚拟机,也可监控远程java虚拟机;
概要是总体信息
内存标签页相当于jstat命令
线程标签页相当于jstack命令
注:使用图形化工具,要开启JMX
2、VisualVM --jdk1.6 u7才提供,但也可以监控jdk1.4.2这样老版本的java虚拟机;
可能是最好的java虚拟机监控工具,其功能比收费工具JProfiler也不逊色多少;
在jdk安装目标bin下双击jvisualvm.exe启动VisualVM;
VisualVM基于NetBeans开发,可以支持安装多种插件,在菜单的工具-->插件一栏可以选择安装自己需要的插件;
注意:
JDK1.5及之前的版本要开启JMX功能,需在程序启动前加上参数-Dcom.sun.management.jmxremote,JDK的一些可视化工具需要开启JMX功能才能使用,JDK1.5之后的版本默认是开启了JMX的,无需加该参数;
JVM内存溢出分析
Memory Analysis(dump文件) mat
下载:https://www.eclipse.org/mat/
可以通过一下命令,生成堆转存快照
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=e:/export/heapdump.hprof
也可以通过jmap
jmap -dump:format=b,file=d:/logs/heapdump2.hprof pid
format=b 表示格式为二进制
image.png
image.png
image.png