一、jps(JVM Process Status Tool)
描述
jps命令使用率最高,常用命令。可用于查询正在运行的虚拟机进程,同时可选择性的显示虚拟机执行主类,即执行main函数的类,以及进程的本地虚拟机ID。
LVMID(Local Virtual Machine Identifier) 本机虚拟机唯一ID
对于本机虚拟机进程来说,LVMID与操作系统的进程ID(PID,Process Identifier)是一致的。如果同时启动了多个虚拟机进程。
jps命令格式如下
jps [options] [hostid]jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册主机名。
示例
列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099
jps 192.168.0.77参数说明
-q 只输出LVMID,省略主类的名称。
-m 输出虚拟机进程启动时传递给主类mian()函数的参数。
-l 输出主类的全名,如果进程执行的是jar包,输出jar路径。
-v 输出虚拟机进程启动时JVM参数。
二、 jstat(JVM Statistics Monitoring Tool)
描述
Linux下特有,常用命令。可用于显示本地或远程虚拟机进程中的类装载 ,内存,垃圾收集,JIT编译等运行数据。
命令格式
jstat vmid [interval[s|ms]] [count] ]其中若查询的是本地虚拟机进程,VMID与LVMID是一致的,如果是远程虚拟机进程VMID的格式为:
[protocol:][//] lvmind[@hostname [:port] /servername]示例
-class 每隔1秒监控一次,一共做10次。
jstat -class 2083 1000 10-gc 每隔2秒监控一次,共做10。
jstat -gc 2083 2000 20-gccause 每隔5秒监控一次
jstat -gccause 2083 5000参数说明
-class 统计class loader行为信息
-compile 统计编译行为信息
-gc 统计jdk gc时heap信息
-gccapacity 统计不同的generations(包括新生区,方法区)相应的heap容量情况
-gccause 统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew 统计gc时,新生代的情况
-gcnewcapacity 统计gc时,新生代heap容量
-gcold 统计gc时,老年区的情况
-gcoldcapacity 统计gc时,老年区heap容量
-gcpermcapacity 统计gc时,permanent区heap容量
-gcutil 统计gc时,heap情况
-printcompilation
三、jinfo(Configuration Info for Java)
描述
Linux下特有。用于查看和调整虚拟机的配置参数。
命令格式
jinfo [option] pid示例
其中2083就是java进程id号,可以用jps得到这个id号。
jinfo -flag 2083参数说明
-flags 查询线程的参数
四、 jmap(Memory Map for Java)
描述
Linux下特有,常用命令。用于获取heapdump文件,且可以查询finalize执行队列,Java堆与永久代的一些信息。
命令格式
jmap [option] vmid示例
观察New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况
jmap -heap 2083观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。
jmap -histo 2083 | jmap -histo:live 2083查看JVM堆中对象详细占用情况
jmap -histo [pid]导出整个JVM 中内存信息
jmap -dump:format=b,file=fileName [pid]参数说明
-dump 生成Java堆转储快照
-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象
-heap 显示Java堆详细信息,如使用哪种回收器,参数配置,分代状况等
-histo 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小
-histo:live 同上,但是只答应存活对象的情况
-permstat 打印permanent generation heap情况
五、 jhat(JVM Heap Analysis Tool)
描述
在实际场景中,一般不会用jhat命令直接分析dump文件。jhat命令与jmap命令搭配使用,用于分析jmap生成的堆转储快照,jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。
命令格式
jhat headdumpFileName六、jstack(Stack Trace for Java)
描述
Linux下特有,Java堆栈跟踪工具。jstack命令用于生成虚拟机当前快照(一般称为threaddump或javacore文件),线程快照就是当前虚拟机内每一条线程执行的方法堆栈的集合。
问题定位
死锁,死循环,外部资源请求导致长时间等待。
命令格式
jstack [options] vmid示例
查看LVMID为3000堆栈信息。
jstack -l 3000参数说明
-f 当正常输出的请求不被响应时,强制输出线程栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法,可以显示C/C++的堆栈信息
大家好,我是Wooola,10年JAVA老兵,擅长微服务,分布式,并发,工作流。请大家多多关注我。