常用命令
jps
### 查询PID
jps
jps -l
java -XX:+PrintFlagsFinal -version
java -XX:+PrintCommandLineFlags -version
jinfo
### 用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
jinfo -flags PID
### 打印指定JVM的参数值
jinfo -flag <name> PID
jinfo -flag UseParallelGC PID
jinfo -flag UseConcMarlSweepGC PID
jinfo -flag UseG1GC PID
jinfo -flag UserParNewGC PID
### 设置指定JVM参数的布尔值
jinfo -flag [+|-]<name> PID
### 设置指定JVM参数的值
jinfo -flag <name>=<value> PID
jstat
###查看虚拟机性能统计信息
## 查看某个Java进程的类转载信息,每1000ms输出一次,共输出10次
jstat -class PID 1000 10
## 查看垃圾收集信息
jstat -gc PID 1000 10
jstack
### 查看线程堆栈信息
jstack PID
jmap
### 打印出堆内存相关信息
jmap -heap PID
### 获取Dump文件
## 手动
jmap -dump:format=b,file=heap.hprof PID
## 自动(一般在开发中,JVM参数可以加上下面两句,这样内存溢出时,会自动dump出该文件)
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
二、常用工具
jconsole
JDK自带的可视化监控工具。查看Java应用程序的运行情况、监控堆信息、永久区使用情况、类加载情况等。
jvisualvm
监控本地Java进程
可以监控本地Java进程的CPU、类和线程等。
监控远端Java进程
比如监控远端的Tomcat。
Arthas
下载地址:https://github.com/alibaba/arthas
Arthas是Alibaba开源的Java诊断工具,采用命令行交互模式,是排查JVM相关问题的利器
Mat(Memory Anoalyzer Tool)
Java堆分析器,用于查找内存泄漏(Heap Dump,称为堆转储文件,是Java进程在某个时间内的快照)
下载地址:https://www.eclipse.org/mat.downloads.php
GC日志分析工具
生成GC日志配置
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc.log
在线:http://gceasy.io
GCViewer
下载地址:https://github.com/chewiebug/GCViewer/releases