1 JVM监控命令
jps、jstack、jmap、jinfo、jstat
1.1 jps
jps主要用来输出JVM中运行的进程状态信息,包括进程ID、进程启动的路径等。
Ps -ef | grep java
1.2 jstack
如果想要查看Java进程中线程堆栈的信息,可以选择jstack。
用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是 定位线程长时间停顿的原因,比如线程间死锁、死循环、请求外部资源导致的长时间等待。
-F:当正常输出的请求不被响应时,强制输出线程堆栈
-l:除堆栈外,显示关于锁的附加信息
-m:如果调用到本地方法的话,可以显示C/C++的堆栈
Jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以在JVM性能调优中使用非常多。
步骤:
1、找出Java进程ID。
ps -ef | grep [服务器上的Java应用名称] | grep -v grep
(grep -v grep是指过滤掉含有grep字符的行)
Eg:ps -ef | grep App
[root@localhost ~]# ps -ef | grep ApacheJetspeed
root 18887 18828 0 08:09 pts/0 00:00:00 grep ApacheJetspeed
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
root 18887 18828 0 08:09 pts/0 00:00:00 grep ApacheJetspeed
ps:将某个进程显示出来
-A 显示所有程序。
-e 此参数的效果和指定"A"参数相同。
-f 显示UID,PPIP,C与STIME栏位。
1 JVM监控命令
jps、jstack、jmap、jinfo、jstat
1.1 jps
jps主要用来输出JVM中运行的进程状态信息,包括进程ID、进程启动的路径等。
Ps -ef | grep java
1.2 jstack
如果想要查看Java进程中线程堆栈的信息,可以选择jstack。
用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是 定位线程长时间停顿的原因,比如线程间死锁、死循环、请求外部资源导致的长时间等待。
-F:当正常输出的请求不被响应时,强制输出线程堆栈
-l:除堆栈外,显示关于锁的附加信息
-m:如果调用到本地方法的话,可以显示C/C++的堆栈
Jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以在JVM性能调优中使用非常多。
步骤:
1、找出Java进程ID。
ps -ef | grep [服务器上的Java应用名称] | grep -v grep
(grep -v grep是指过滤掉含有grep字符的行)
Eg:ps -ef | grep App
[root@localhost ~]# ps -ef | grep ApacheJetspeed
root 18887 18828 0 08:09 pts/0 00:00:00 grep ApacheJetspeed
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
root 18887 18828 0 08:09 pts/0 00:00:00 grep ApacheJetspeed
ps:将某个进程显示出来
-A 显示所有程序。
-e 此参数的效果和指定"A"参数相同。
-f 显示UID,PPIP,C与STIME栏位。