Java虚拟机性能监控与调优

JDK本身提供了很多工具,来帮助我们来定位问题,一般分为命令行工具和可视化工具。

(1)jps:虚拟机进程状况工具

        jps(JVM Process Status Tool)功能和Linux系统的ps命令类似,可以列出正在运行的虚拟机进程,并显示虚拟机主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机的唯一的ID,也就是PID。

        命令格式: jps [option] [hostid]

        参数:

                -q : 只输出LVMID,省略主类的名称

                -m :输出虚拟机进程启动传递给主类main()的参数

                -l :输出主类的全名,如果进程执行的是jar包,输出jar包路径

                -v :输出虚拟机进程启动的JVM参数

Java虚拟机性能监控与调优

(2)Jstack:Java堆栈跟踪工具

        该命令用于生成当前虚拟机的线程快照(一般称为threaddump或者javacore),线程快照就是当前虚拟机内每一条线程正在执行的堆栈集合,生成线程的快照的目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待都是导致线程停顿的常见原因。

        命令格式:jastack  [option] vmid

        参数:

            -l : 除堆栈外,显示关于锁的附加信息

            -F :当正常输出的请求不被响应时,强制输出线程堆栈

            -m :如果调用本地方法的话,就可以显示C/C++的堆栈

Java虚拟机性能监控与调优