系列文章规划:
JDK常用内置工具(基于jdk8)
工具 | 用途 |
---|---|
jps | 列出已装载的JVM |
jstack | 打印线程堆栈信息 |
jstat | JVM监控统计信息 |
jmap | 打印JVM堆内对象情况 |
jinfo | 输出JVM配置信息 |
jconsole | GUI监控工具 |
jvisualvm | GUI监控工具 |
jhat | 堆离线分析工具 |
jdb | java进程调试工具 |
jstatd | 远程JVM监控统计信息 |
列出已装载的JVM,使用比较简单,不多说,直接看手册即可。
打印线程堆栈信息,比较简单,直接看手册即可。
JVM监控统计信息,包括类的加载和卸载情况,新生代和老年代的容量、使用情况等信息。统计维度比较多:
具体日志输出含义,看手册。
打印JVM堆内对象情况,常用参数有:(具体描述见手册)
-dump:[live,]format=b,file=< filename>
使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件。
-finalizerinfo
打印正等候回收的对象的信息。
-heap
打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况。
-histo[:live]
打印每个class的实例数目、内存占用、类全名信息。VM的内部类名字开头会加上前缀“*”。如果live子参数加上后,只统计活的对象数量。
-clstats
打印classload的信息。包含每个classloader的名字、活泼性、地址、父classloader和加载的class数量。
-F
在pid没有响应的时候强制使用-dump或者-histo参数。在这个模式下,live子参数无效。
jinfo可以输出并修改运行时的java 进程的opts。用处比较简单,用于输出JAVA系统参数及命令行参数。详情参见手册。
一个java GUI监视工具,可以以图表化的形式显示各种数据。可通过远程连接监视远程的服务器VM。用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。命令行里打 jconsole,选择进程就可以了。
需要注意的就是在运行jconsole之前,必须要先设置环境变量DISPLAY,否则会报错误。
详细使用见手册。
jvisualvm同jconsole都是一个基于图形化界面的、可以查看本地及远程的JAVA GUI监控工具,Jvisualvm同jconsole的使用方式一样,直接在命令行打入Jvisualvm即可启动,不过Jvisualvm相比,界面更美观一些,数据更实时。
详细使用见手册。
用于对JAVA heap进行离线分析的工具,可以对不同虚拟机中导出的heap信息文件进行分析。详细使用见手册。
用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但jdb是专门用来针对Java应用程序的。现在应该说日常的开发中很少用到JDB了,因为现在的IDE已经帮我们封装好了,如使用ECLIPSE调用程序就是非常方便的,只要在非常特定的情况下可能会用到这个命令,如远程服务器的维护,没有IDE进行调试,那这个时候JDB应该可以帮上忙。
详细使用见手册。
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
详细使用见手册。