天天看点

jdk分析工具:jps和jstackjpsjstack

用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。与unix上的ps类似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号做为参数。

Jps也可以显示远程系统上的JAVA进程,这需要远程服务上开启了jstat服务,以及RMI注及服务,不过常用都是对本对的JAVA进程的查看。

jps [ options ] [ hostid ]

-m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。

-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。

-v 输出传给JVM的参数。

jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack

前面的数字是jvm的进程id,后面是jvm的类启动信息。

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

$jstack [ option ] pid

$jstack [ option ] executable core

$jstack [ option ] [server-id@]remote-hostname-or-IP

OPTIONS

-F jstack [-l] pid无法响应时,强制打印堆栈

-l l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

-m 混合模式输出(包括java和本地c/c++片段)堆栈。

pid: java应用程序的进程号,一般可以通过jps来获得;

executable:产生core dump的java可执行程序;

core:打印出的core文件;

remote-hostname-or-ip:远程debug服务器的名称或IP;

server-id: 唯一id,假如一台主机上多个远程debug服务;

jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack

一般情况下,通过jstack输出的线程信息主要包括:jvm自身线程、用户线程等。其中jvm线程会在jvm启动时就会存在。对于用户线程则是在用户访问时才会生成。

本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/p/6006868.html,如需转载请自行联系原作者