thunisoft成长快乐!

JDK自带的检测虚拟机性能的工具

2017-02-08  本文已影响38人  MentallyL

1. jps: 列出正在运行的虚拟机进程,并可以显示虚拟机的LVMID(对于本地来说,LVMID就是操作系统的进程ID,也就是PID)。也可以显示虚拟机执行的主类,如果进程是Jar包就显示时Jar包的路径

命令的格式:jps [ options ] [ hostid ]
其中[ options ] 是一些选项,常用的选项如下:
jps -q 只显示LVMID
jps -m 显示传递给主函数的参数
jps -l 主类全名,如果是jar则输出Jar包路径
jps -v 显示虚拟机启动时的JVM参数

执行的例子:

C:\Users\XXXX>jps -l
7144 C:\Users\wangshq\AppData\Local\Temp\pulBF1.tmp\PULSEI~1.JAR
17048 sun.tools.jps.Jps
30196 org.apache.catalina.startup.Bootstrap
29748 org.apache.catalina.startup.Bootstrap

这是我在我本地启动了两个Tomcat,执行jps -l 的例子

2. jstat: 用于监视虚拟机各种运行状态信息的命令工具。如:类装载,内存,垃圾收集,JIT编译等信息。
例子: jstat -gc 2764 250 20
这个代表在250毫秒内查询一次2764的垃圾收集情况,一共查20次。

3. jinfo: 用于实时的查看和调整虚拟机各项参数。
jinfo 可以使用 jinfo -flag来查看系统默认的值,也可以使用 jinfo -flag name=value 来修改虚拟机参数.

4. jmap:主要用于生产堆转储快照(dump文件)

其实不使用jmap命令也可以获取dump文件,在jvm参数上加上-XX:+HeapDumpOnOutOfMemoryError参数,在出现OOM异常的时候可以自动生成dump文件,还可以在Linux使用kill -3命令来生成dump快照文件

jmap命令不仅能得到dump文件,还有很多功能。例如它可以查询Java堆的详细信息,永久代的详细信息,使用的是哪种收集器,空间使用率是多少等等

具体的jmap命令的选项如下:

5. jhat:用来分析dump快照文件,内置了一个http服务器,可以在浏览器中查看。
但目前很少有人用jhat来分析dump文件,主要是因为它的分析功能很有限

6. jstack:java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照。
线程快照是当前虚拟机内每一条线程正在执行的方法堆栈的集合,用来分析和定位线程出现长时间停顿,如思索,死循环,饥饿等问题。

在Thread类中的getAllStackTraes()方法可以获得虚拟机中所有线程的StackTraceElement对象。我们可以使用这个方法来查看线程的堆栈情况

上一篇下一篇

猜你喜欢

热点阅读