开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第28天,点击查看活动详情
JDK相关监控命令介绍
介绍
我们平时经常使用jdk,但是了解过jdk安装目录中bin目录下的相关命令吗,bin目录下有很多命令,有些命令也是我们开发中经常使用的,例如javac,java的编译器、java,java的解释器,运行java应用程序代码、javadoc,生成java文档,今天我们就来聊一聊相关的监控和分析命令。
jps
jps是显示当前系统的java进程情况,仅查找当前用的Java进程,不显示当前系统的所有进程。
-l 输出主类的全限定名
-v 输出进程启动时的JVM参数
-m 输出传给Java进程main()函数的参数
jstat
jstat是监控分析指令,会显示类加载的一些信息以及GC信息,并且可以对GC信息进行监控。
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
option 命令选项
-t 输出信息时会加上时间一列,显示运行时间
-h n 每显示n行显示一次表头,默认是0
vmid 对应windows下的Pid
interval 间隔时间(毫秒)
count 查询次数
jinfo
jinfo是可以查询jvm所有配置信息以及指定修改配置的命令,它会输出jvm进程的全部参数和系统属性,修改配置时可以不重启虚拟机。
jmap
jmap是用来导出堆转储文件,方便进行内存、对象大小分析。在CPU过高、GC频繁、内存泄露等情况时,我们需要对线上环境进行分析,又需要快速解决,我们就可以使用jmap进行导出dump文件,方便我们进行分析,发现问题。
jhat
jhat是用于分析heapdump文件,它会建立一个Http/Html服务器,让用户可以在浏览器上分析查看结果。
jstack
jstack可以生成Java虚拟机当前时间的线程快照信息,包括类名、方法名、字节码索引、行号等等,方便我们排查死锁、死循环等场景。
-F 强制显示线程快照信息,一般用于进程挂起没有响应时。
-l 显示关于锁的附加信息
-m 显示混合的栈帧信息。包含Java方法栈帧和本地方法栈帧。
-h/-help 显示帮助信息。