JVM基础(7)——jdk常用内置工具

来源:互联网 发布:中国跳水最厉害的知乎 编辑:程序博客网 时间:2024/06/14 18:26

系列文章规划:

  1. JVM基础(1)——内存模型
  2. JVM基础(2)——内存管理
  3. JVM基础(3)——编译机制
  4. JVM基础(4)——类加载机制
  5. JVM基础(5)——垃圾回收和调优
  6. JVM基础(6)——G1收集器及G1日志分析
  7. JVM基础(7)——jdk常用内置工具

JDK常用内置工具(基于jdk8

工具 用途 jps 列出已装载的JVM jstack 打印线程堆栈信息 jstat JVM监控统计信息 jmap 打印JVM堆内对象情况 jinfo 输出JVM配置信息 jconsole GUI监控工具 jvisualvm GUI监控工具 jhat 堆离线分析工具 jdb java进程调试工具 jstatd 远程JVM监控统计信息

1. jps

列出已装载的JVM,使用比较简单,不多说,直接看手册即可。

2. jstack

打印线程堆栈信息,比较简单,直接看手册即可。

3. jstat

JVM监控统计信息,包括类的加载和卸载情况,新生代和老年代的容量、使用情况等信息。统计维度比较多:

  • -class
  • -compiler
  • -gc
  • -gccapacity
  • -gccause
  • -gcnew
  • -gcnewcapacity
  • -gcold
  • -gcoldcapacity
  • -gcpermcapacity
  • -gcutil
  • -printcompilation

具体日志输出含义,看手册。

4. jmap

打印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子参数无效。

5. jinfo

jinfo可以输出并修改运行时的java 进程的opts。用处比较简单,用于输出JAVA系统参数及命令行参数。详情参见手册。

6. jconsole

一个java GUI监视工具,可以以图表化的形式显示各种数据。可通过远程连接监视远程的服务器VM。用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。命令行里打 jconsole,选择进程就可以了。

需要注意的就是在运行jconsole之前,必须要先设置环境变量DISPLAY,否则会报错误。

详细使用见手册。

7. jvisualvm

jvisualvm同jconsole都是一个基于图形化界面的、可以查看本地及远程的JAVA GUI监控工具,Jvisualvm同jconsole的使用方式一样,直接在命令行打入Jvisualvm即可启动,不过Jvisualvm相比,界面更美观一些,数据更实时。

详细使用见手册。

8. jhat

用于对JAVA heap进行离线分析的工具,可以对不同虚拟机中导出的heap信息文件进行分析。详细使用见手册。

9. jdb

用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但jdb是专门用来针对Java应用程序的。现在应该说日常的开发中很少用到JDB了,因为现在的IDE已经帮我们封装好了,如使用ECLIPSE调用程序就是非常方便的,只要在非常特定的情况下可能会用到这个命令,如远程服务器的维护,没有IDE进行调试,那这个时候JDB应该可以帮上忙。

详细使用见手册。

10. jstatd

jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。

详细使用见手册。

参考文献

  1. Java Platform, Standard Edition Tools Reference
  2. JDK内置工具使用
0 0