JDK自带工具使用

JDK自身携带了大量的工具,以jdk1.6.0_38为例,已经自带了47个工具,包括大量的调试分析工具,有些是命令行有些是图形界面工具,这篇文章记录下其中一些工具的使用说明,以后有新的使用体会了再完善补充这篇文章

 

1 jstack 

jstack用于打印java进程的堆栈信息或者从jvm进程崩溃后生成的dump文件生成堆栈信息

命令使用格式

jstack [option] pid

jstack [option] core_file

jstack [option] [server_id@]<remote server ip or hostname>

 

其中[option] 可选参数有

-l -m -F  详细说明通过jstack -h来查看

英文原文说明如下:

    -F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)

    -m  to print both java and native frames (mixed mode)

    -l  long listing. Prints additional information about locks

    -h or -help to print this help message

 

2 jps

和unix/linux里的ps类似,jps只打印jvm上运行的进程信息 输出运行进程的启动文件名和进程ID(pid)

jps命令参数说明

 -q 不输出类名、Jar名和传入main方法的参数

-m 输出传入main方法的参数

-l 输出main类或Jar的全限名

-v 输出传入JVM的参数

3 jmap

jmap用于打印java进程堆栈信息和java堆内存转存到文件

 

 (一) java -histo pid 打印java堆内类的实例数、字节数和类目,截图是本地的eclipse进程输出信息



 

 (二) java -histo:live pid和上面的类似,只是打印"存活"的对象

 

 (三) jmap -dump:file=file_path pid 将java 堆内存以hprof 二进制格式转存到文件。

 关于hprof二进制格式的说明可以参考这里 https://java.net/downloads/heap-snapshot/hprof-binary-format.html 

 

(四) jmap -heap pid 打印java 堆内存概述信息

下图是在某测试机器上执行情况



 

 参数的解释

NewRatio:年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)

SurvivorRatio:Eden区与Survivor区的大小比值

 


 4 jconsole和jvisualvm 

  这两个是图像化工具所见即所得,不仅支持本地而且还支持远程监视,不过远程连接之前要先做配置

 

5 jstat 

 查看jvm运行状态工具,包括JVM内各种内存空间(Eden Survivor 1/2 Old)使用情况和各种GC(YongGC Full GC)发生次数

 jstat -options 查看可选参数

  输出如下


这些选项分别表示  

 

 统计本地eclipse GC信息

其中从做到右的S0 S1  GCT分别代表如下

S0  — Heap上的 Survivor space 0 区已使用空间的百分比

S1  — Heap上的 Survivor space 1 区已使用空间的百分比

E   — Heap上的 Eden space 区已使用空间的百分比

O   — Heap上的 Old space 区已使用空间的百分比

P   — Perm space 区已使用空间的百分比

YGC — 从应用程序启动到采样时发生 Young GC 的次数

YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)

FGC — 从应用程序启动到采样时发生 Full GC 的次数

FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)

GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

 

 其它工具以后使用到了 有空再继续写

 

 

猜你喜欢

转载自junlintianxia.iteye.com/blog/1988656