网上有很详细的命令行的使用,本篇只记录很常用的几个命令,为了方便以后自己查阅。
1、jps(JVM Process Status Tool):查看正在运行的java虚拟机进程
jps命令相当于Linux下的ps命令,只不过它只列出Java进程
2、jstat(JVM Statistics Mornitoring Tool):查看虚拟机运行时信息
jstat可以查看Java虚拟机各种运行状态信息,可以通过它查看JAVA虚拟机进程中的类装载、堆内存、垃圾收集、JIT编译等运行数据
jstat -<options> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
options:包含以下选项
-t:在输出信息前加上一个Timestamp列,显示程序的运行时间
vmid:与操作系统的PID是一致的
interval:用于指定输出统计数据的周期,单位为毫秒
count:用于指定输出几次数据
使用示例:
需要每500毫秒查询一次PID为1612垃圾回收情况,一共查询5次,那命令如下:
jstat -gc 1612 500 5
输出GC相关信息:
3、jmap(Memory Map For Java):查看或导出堆快照信息
jmap可以生成Java程序的堆的dump文件,也可以查看堆内存对象的统计信息,查看ClassLoader的信息以及finalizer队列
jmap [option] vmid
options:包含以下选项
使用示例:
生成PID为1612前20名的对象统计信息,并将结果写到/root/logs/jmapresult.txt
jmap -histo pid | head -20 > /root/logs/jmapresult.txt
生成PID为1612的当前堆快照(生成的结果可以使用专门的工具进行分析)
jmap -dump:format=b,file=/root/logs/heap.hprof 1612
4、jhat(JVM Heap Analysis Tool):JDK自带的堆分析工具
jhat命令与jmap命令搭配使用,用来分析jmap生成的堆快照信息。不过一般不会使用jhat命令来分析dump文件,因为其功能很简陋。可以使用专门分析dump文件的Eclipse Memory Analyzer工具。
使用示例:
jhat /root/logs/heap.hprof
5、jstack(Stack Trace For Java):查看虚拟机当前时刻的线程快照
线程快照就是当前虚拟机内每一个线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。
jstack [option] vmid
options:包含以下选项
-l :除堆栈外,显示关于锁的附加信息
使用示例:
生成PID为1612线程堆栈信息(会包含锁信息),并将结果写到/root/logs/jstack.txt
jstack -l 1612 > /root/logs/jstack.txt
6、jinfo(Configuration Info For Java):实时查看和调整虚拟机的各项参数
jinfo [option] <pid>
options:包含以下选项
参考地址:
https://blog.csdn.net/xiaoliuliu2050/article/details/74012382
https://blog.csdn.net/l2580258/article/details/80147602
https://www.cnblogs.com/yjd_hycf_space/p/7755633.html
原文:https://www.cnblogs.com/xuwenjin/p/13081100.html