Skip to content

JVM

JVM 指令常用于获取JVM运行时的性能和状态信息, 包括内存、线程、类、垃圾回收等。6个常用的JVM命令:jps、jstat、jmap、jhat、jstack和jinfo

jps

jdk提供的一个查看当前java进程的小工具

命令用途
jps -l输出完全的包名,应用主类名,jar的完全路径名
jps -v输出jvm参数

jinfo

JDK 自带的命令,可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数

命令用途示例
jinfo pid查看jvm系统详细参数及环境变量jinfo 1
jinfo -flags pid查看jvm非默认值参数jinfo -flags 1
jinfo -flag <option> pid每个参数独立查看jinfo -flag MetaspaceSize 1
jinfo -flag <name>=<value>动态修改jvm参数jinfo -flag +HeapDumpOnOutOfMemoryError 1
jinfo -flag HeapDumpPath=/opt/dump/ 1

jstat

查看进程的JVM的GC和堆内存使用情况

命令用途说明
jstat -gc pid [刷新时间ms]GC 详情xxC 是容量,xxU是使用量,xxT是耗时
jstat -class pid查询加载卸载class的数量及所占空间耗时。
jstat -gcutil pid查询进程内存各年龄代使用率M是metaspace

jstack

线程栈工具

  • top -H -p <pid> 该进程下最占用CPU资源的线程排序
命令说明
jstack pid打印该进程的线程栈

jmap

JVM内存使用情况(实例数、class、占用)

命令说明
jmap -histo pid | head -n 10查看前10位
jmap -histo pid | sort -k 2 -g -r查看对象数最多的对象,按降序输出
jmap -histo pid | sort -k 3 -g -r查看内存的对象,按降序输出
jmap -histo:live pid手动触发 full gc
jmap -dump:format=b,file=文件名.hprof piddump内存镜像到文件
jmap -dump:live,format=b,file=文件名.hprof piddump在生命周期内的内存镜像到文件(无法被GC的对象)

jcmd

命令含义
jcmd -l输出完全的包名,应用主类名,jar的完全路径名, 等同于 jps -l
jcmd pid help列出该进程的可用命令
jcmd pid [option]执行相关命令
jcmd pid GC.heap_info查看 GC 信息(更换 option 可查询更多信息)

Released under the MIT License.