# 常用命令
# 1.top
查看服务器内存利用率
top -p <pid> # Java进程的内存情况,pid是java进程号。
top -p <pid> -H # 查看指定进程下的线程cpu占用比例。
1
2
2
# 2.ps
查看进程
ps -ef|grep port
ps -ef|grep 8903 # 查找端口为8903的进程信息。
ps -mp pid -o THREAD,tid,time | sort -rn | more
ps -mp 25990 -o THREAD,tid,time | sort -rn | more # 查看进程25990的所有线程信息。
1
2
3
4
5
2
3
4
5
# 3.jstat(Java Virtual Machine Statistics Monitoring Tool)
Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计。
# jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]
jstat -gcutil
jstat -gcutil 25990 1000 10 # 每隔1s打印一次java进程为25990的gc信息,打印10次。
1
2
3
2
3
# 4 jstack(Java Stack Trace)
打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。
jstack -l pid
jstack -l 25990 # 打印java进程为25990的所有线程信息。
jstack -l pid > logfile
jstack -l 25990 > jstack25990.log # java进程为25990的所有线程信息输出到jstack25990.log文件。
jstack pid |grep nid #(tid的16进制)
jstack 25990 |grep 7fa0 # 打印java进程为25990中线程tid为32672(16进制:7fa0)的堆栈信息。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 5.jmap(Java Memory Map)
打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。
jmap -histo pid > a.log
jmap -histo 25990 > heap25990.log # 输出25990进程内存中的每个class信息到heap25990.log文件。
jmap -dump:format=b,file=outfile pid
jmap -dump:format=b,file=outfile 25990 # 将25990进程的内存heap输出出来到outfile文件里。
1
2
3
4
5
2
3
4
5
Java虚拟机 →