jvm基础之jdk工具使用
今天一起学习下jdk自带的分析监控工具(基于HotSpot)。
今天结束的几种都是常用的工具,其他工具请小伙伴们自行摸索。
jps JVM进程状况工具(JVM Process Status Tool),主要用于显示系统上的HotSpot JVM的Java进程信息。
jstat JVM统计信息监测工具(JVM Statistics Monitoring Tool),主要用于监测并显示JVM的性能统计信息
jinfo Java配置信息工具(Java Configuration Information),用于打印指定Java进程、核心文件或远程调试服务器的配置信息。
jmap Java内存映像工具(Java Memory Map),主要用于打印指定Java进程、核心文件或远程调试服务器的共享对象内存映射或堆内存细节。
jhat Java堆转储分析工具(Java Heap Analysis Tool),主要用于分析Java堆内存中的对象信息
jstack Java堆栈跟踪工具,主要用于打印指定Java进程、核心文件或远程调试服务器的Java线程的堆栈跟踪信息。
一,jps(JVM进程状况工具)
jps命令格式: jps [options] [hostid]
主要的options如下 :
-q 输出jvm进程的本地虚拟机ID,即本地操作系统的进程ID
-m 输出虚拟机进程启动时传递给主类main方法的参数
-l 输出主类的全名或jar包路径
-v 输出虚拟机进程启动时的jvm参数。
hostid为生成进程报告的主机的主机标识符。hostid可能包括表示通讯协议、端口号等,本机则为空。格式:[protocol:][[//]hostname][:port][/servername]
如下图所示:
二,jstat JVM统计信息监视工具
jstat命令格式:
jstat [option vmid [interval[s|ms]] [count]]
vmid如果是本地虚拟机进程,则是本地进程ID(即LVMID),远程虚拟机则与jps的hostid一致。
interval表示查询时间间隔,单位秒或毫秒
count 表示查询次数
option选项
-class 类加载器的统计信息
-compiler JIT(即时编译器)的方法,耗时等统计
-gc 监视java堆的状况,包括Eden区,两个survivor区,老生代等垃圾回收的信息。
-gccapacity Java各代区域以及对应空间的容量统计
-gccause 垃圾回收的摘要信息, 以及上一次垃圾回收事件的原因。
-gcnew 新生代区的行为统计
-gcnewcapacity 新生代区及其对应空间的大小统计。
-gcold 老年代GC的行为统计。
-gcoldcapacity 老年代GC的行为统计及对应空间大小等统计。
-gcpermcapacity 永久代的空间统计。
-gcutil GC的统计信息。
-printcompilation 输出以被JIT编译的方法。
如下图所示是-gc的信息 : S0 S1表示两个survivor区占的空间,E表示Eden区占的空间,YGC和YGCT表示MinorGC的次数和耗时,FGC和FGCT表示Full GC的次数和耗时.
jstat -gc ID
如下图是,JIT编译的方法信息:
-printcompilation
三,jinfo java配置信息工具
格式;jinfo [option] pid
option
-flag 虚拟机启动的参数查看,部分参数可直接修改
-sysprops 虚拟机系统参数信息
使用示例:
jinfo -flag GCLogFileSize 8817
-XX:GCLogFileSize=1048576
四,jmap Java内存映像工具
用于生成堆内存转储快照文件。
命令格式:jmap [ option ] vmid
-dump:生成jvm 堆存储快照 ,dump格式:-dump:[live,]format=b,file=<filename> 使用二进制形式,输出jvm的heap内容到文件, live子选项是可选的,假如指定live选项,那么只输出活的对象到文件。
-heap:显示jvm堆的详细信息
-histo:打印jvm heap的统计信息。其输出信息包括类名,对象数量,对象占用大小。
-permstat:打印永久代的内存情况
-F 强制生成dump快照
五,jhat 堆存储快照分析工具
使用jhat 文件名 后,等待Server is ready提示信息,然后在浏览器输入http://ip:7000,可以看到分析结果。
六,jstack 线程堆栈跟踪工具
格式:jstack [ option ] vmid
选项:
-F 强制输出堆栈信息
-l 除堆栈外,附加锁的信息
-m 如果调用本地方法,显示C/C++的堆栈。
java书籍推荐: