应用服务器发送如上错误,抓线程堆栈,用到jps、jstack 命令

A、 jps(Java Virtual Machine Process Status Tool)      

    jps主要用来输出JVM中运行的进程状态信息。语法格式如下:

1 jps [options] [hostid]

 

    如果不指定hostid就默认为当前主机或服务器。

    命令行参数选项说明如下:

1 -q 不输出类名、Jar名和传入main方法的参数
2 -m 输出传入main方法的参数
3 -l 输出main类或Jar的全限名
4 -v 输出传入JVM的参数

B、 jstack

    jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:

1 jstack [option] pid
2 jstack [option] executable core
3 jstack [option] [server-id@]remote-hostname-or-ip

 

    命令行参数选项说明如下:

1 -l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
2 -m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)

 

    jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。


比如:

记Http connection dropped


转自:http://www.cnblogs.com/rainy-shurun/p/5732341.html

相关文章: