jps:
列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称
jps -q : 只显示LVMID
jps -m : 显示传递给main()函数的参数
jps -l : 显示虚拟机执行主类(Main Class,main()函数所在的类)全路径名称
jps -v : 显示虚拟机启动的显式指定参数
jps options hostid
jps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名
jstat:
虚拟机统计信息监视工具,查看堆内存各部分的使用量,以及加载类的数量,以及垃圾回收情况
jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]
jstat -class vmid:类加载统计
jstat -gc vmid:垃圾回收统计
jstat -gcnew vmid:新生代垃圾回收统计
jstat -gcold vmid:老生代垃圾回收统计
jstat -gccapacity vmid:堆内存统计
jstat -gcnewcapacity vmid:新生代内存统计
jstat -gcoldcapacity vmid:老生代内存统计
jstat -gcmetacapacity vmid:元空间内存统计
jstat -gcutil vmid:总结垃圾回收统计
jstat -gcutil 18883@10.202.37.75:1099 1000 1000
查看远程虚拟机
jinfo:
Java配置信息工具,查看和调整虚拟机各项参数
jinfo -flag CMSInitiatingOccupancyFraction vmid: 查看CMSInitiatingOccupancyFraction参数值
jinfo -sysprops vmid: 查看System.getProperties()的内容
jmap:
Java内存映像工具,生成堆转储快照,查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的收集器
生成堆转储(heapdump或dump文件)方法:
-XX:+HeapDumpOnOutOfMemoryError:虚拟机在内存溢出异常出现之后自动生成堆转储快照文件
-XX:+HeapDumpOnCtrlBreak: 用[Ctrl]+[Break]键让虚拟机生成堆转储快照文件
jmap -dump:live,format=b,file=myjmapfile.txt vmid:
使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件
jmap -finalizerinfo vmid:
打印正等候回收的对象的信息
jmap -heap vmid:
打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆内存的使用情况
jmap -histo:live vmid:
打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
jhat:
虚拟机堆转储快照分析工具,分析jmap生成的堆转储快照(加载dump文件极耗费硬件资源)
jhat dumpFile:解析后在浏览器中打开
内存泄漏问题主要会使用到其中的“Heap Histogram”(与jmap-histo功能一样)与OQL页签的功能
Heap Histogram:找到内存中总容量最大的对象
OQL页签 :标准的对象查询语言,对内存中的对象进行查询统计
jstack:
Java线程堆栈跟踪工具,线程间死锁、死循环、请求外部资源导致的长时间挂起
jstack -l vmid: 附加显示锁信息