vlambda博客
学习文章列表

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的次数和耗时.

jvm基础之jdk工具使用

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书籍推荐: