JDK1.5+后,有个很方便的工具jconsole跟踪jvm的stack trace,特别在多线程编程,可以方便跟踪各个线程的行踪,在发生线程阻塞或者死锁时,方便定位问题。
启动时,加一个参数-Dcom.sun.management.jmxremote
例如
$JAVA_HOME/bin/java -Xmx1024m -Dcom.sun.management.jmxremote $MAIN_CLASS
如果是监控远程应用,修改称这样吧:
# Setup Jconsole connection
JAVA_OPTS="-Dcom.sun.management.jmxremote=true $JAVA_OPTS"
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9004 $JAVA_OPTS"
JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
JAVA_OPTS="-Dcom.sun.management.jmxremote.ssl=false $JAVA_OPTS"