美文网首页thunisoft成长快乐!
JDK自带的检测虚拟机性能的工具

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

作者: MentallyL | 来源:发表于2017-02-08 12:12 被阅读38次

    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命令的选项如下:

    • jmap -dump:live,format=b,file=<fileName>,用来生成java堆转储快照
    • jmap - finalizerinfo 显示在F-Queue中等待的Finalizer线程执行finalize方法的对象
    • jmap - heap 显示java堆中详细信息,比如使用的是那种收集器,什么参数配置,分代状况等
    • jmap -histo 显示java堆中对象的统计信息,包括类、实例数量、合计容量
    • jmap -permstat 以ClassLoader为统计口径显示永久代的内存情况
    • jmap -F 当使用-dump没有反应的时候,就可以使用-F来强制生成dump快照

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

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

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

    相关文章

      网友评论

        本文标题:JDK自带的检测虚拟机性能的工具

        本文链接:https://www.haomeiwen.com/subject/tnruittx.html