和jconsole侧重于内存分析和检测不同,jvisualvm在线程分析方面更强大一些,下面简单介绍下使用:
1. 在要监控的java应用配置文件中,本例是apache-jmeter/bin/jmeter文件,记住不可换行!
HEAP="-Xms512m -Xmx512m -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=19.168.1.1 "
2. 打开jvisualvm并新增一个jmx连接:
填入ip和port
然后即可打开监视界面,默认的是当前JVM的概要包括参数等:
我们主要看线程状态,单击线程选项卡:
如果发现线程时间轴上有红色块则表明线程阻塞了:
单击第四幅图右上角的线程dump,可以显示当前所有线程的状态,如果有blocked我们可以看到其详细原因,本例中是: