一、linux
1、uptime 或 w
uptime
命令显示系统总共运行了多长时间和系统的平均负载。依次显示为:现在时间、已经运行时长、当前登陆用户数、系统在过去的1分钟、5分钟和15分钟内的平均负载。
系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
Linux w
命令用于显示目前登入系统的用户信息。
执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。
单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
2、top
查看cpu和内存占用
命令详解参见:Linux top命令详解
3、top -Hp {pid}
观察进程中的线程,哪个线程CPU和内存占比高
4、printf ‘%0x\n’ {tid}
利用linux命令将线程ID转换为16进制(jvm日志以16进制显示)
5、sar
sar 命令很强大,是分析系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。
二、java
1、jps
查看java进程
2、jinfo {pid}
查看java进程的系统参数;VM Flags;Command line
3、jstack
查询线程信息;堆栈跟踪信息
如:
jstack {pid} | grep {txid}
查看某一线程对应的堆栈信息jstack -l {pid}
-l:会打印出额外的锁信息,在发生死锁时可用来观察锁持有情况
4、jstat
对java程序资源和性能进行实时监控,包括GC活动。
如:
jstat -gc {pid} 3s
每隔3s打印一次GC信息
5、jmap
查看堆内存和生成堆转储快照
jmap -J-d64 -heap {pid}
查看堆信息(当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项)jmap -J-d64 -histo {pid}
查看堆内存中的对象数量及大小,-histo:live
:查看存活对象。
说明: 其中class name中B 代表 byte,C 代表 char,D 代表 double,F 代表 float,I 代表 int,J 代表
long,Z 代表 boolean,前边有 [ 代表数组, [I 就相当于 int[],对象用 [L+ 类名表示jmap -dump:format=b,file=heapDump {pid}
堆dump
注:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path
JVM启动参数,让JVM在遇到OOM时自动生成dump文件
6、jhat
jhat与jmap搭配使用,用于分析jmap生成的heap dump文件
如:
jhat -port 5000 heapDump