一、uptime
查看系统负载
1 | [admin@10-57-19-253 ~]$ uptime |
解析:
1 | 16:34:16 //当前系统时间 |
二、top
查看系统PID、进程占用CPU、内存、用户
1 | top - 16:31:40 up 36 days, 5:47, 1 user, load average: 0.00, 0.01, 0.05 |
可知java进程PID
为18591
.
top -p PID
查看指定java进程的CPU/内存使用情况。
1 | [admin@10-57-19-253 ~]$ top -p 18591 |
top -Hp PID
根据进程查找内部线程内存和CPU使用情况
1 | admin@10-57-19-253 ~]$ top -Hp 18591 |
三、jps
查看java进程PID
1 | [admin@10-57-19-253 ~]$ jps |
四、jstat
用于输出java程序内存使用情况,包括新生代、老年代、元数据区容量、垃圾回收情况; 命令jstat -gcutil PID interval count
:表示没1000毫秒统计一次结果,共5次
1 | [admin@10-57-19-253 ~]$ jstat -gcutil 18591 1000 5 |
1 | S0:幸存1区当前使用比例 |
五、jmap
用于输出java程序中内存对象的情况,包括有哪些对象,对象的数量。
1 | jmap -histo 18591 |
上述命令打印出进程ID为18591的内存情况。但我们常用的方式是将指定进程的内存heap输出到外部文件,再由专门的heap分析工具进行分析,例如mat(Memory Analysis Tool),所以我们常用的命令是:
jmap -dump:live,format=b,file=heap.hprof 18591
六、jstack
导出线程栈
1 | jstack 18591 > jstack.out |
运行结果:
1 | 2018-12-04 16:48:47 |
七、printf将线程tid转换为16进制
1 | [admin@10-57-19-253 ~]$ printf '%x\n' 18677 |
八、vmstat
查看系统CPU/内存、swap、io等情况 ; vmstat interval count
:每隔1秒输出一个结果,共5次
1 | [admin@10-57-19-253 ~]$ vmstat 1 5 |
解析:
1 | 进程 |
九、应用
查看哪个线程占用内存最高问题
1 | 1) `top` 查看内存和CPU使用最高的进程PID |
十、参考地址
https://www.cnblogs.com/leefreeman/p/7464179.html