一、linux命令
1、top命令
top命令能够实时显示系统中各个进程的资源占用状况,可以从宏观上观察系统各个进程对 CPU 的占用情况以及内存使用情况,各个参数意义如下:
2、sar命令
sar 命令可以周期的对内存和 CPU 使用情况进行采样,基本语法如下:
sar [options] [<interval> <count>]
其中 interval(单位是秒) 和 count 分别表示采样周期和采样数量,options 可以指定 sar 命令对那些数据进行采样,options 选项如下:
3、vmstat 命令
语法是 vmstat [<interval> <count>],它可以统计CPU、内存使用情况、swap使用情况等信息,命令输出含义如下:
4、iostat命令
语法是 iostat [<interval> <count>],可以提供详尽的 I/O 信息,输出参数意义如下:
5、pidstat工具
pidstat 不仅可以监视进程的性能情况,也可以监视线程的性能情况。
1、CPU使用频率监控
要监控程序的 CPU 使用率,先使用 jps 命令找到 java 程序的 PID,然后使用 pidstat 命令输出程序的 CPU 使用情况,命令格式是 pidstat -p 进程ID -u (cpu 使用频率) <interval> <count>
pidstat 命令也可以监控线程信息,命令格式是 pidstat -p 进程ID <interval> <count> -u (cpu 使用频率) -t(将系统性能的监控细化到线程级别)
jstack -1 进程ID >/tmp/t.txt 导出指定应用程序的所有线程
2、I/O 使用监控
I/O 监控命令是 pidstat -p 进程ID -d(监控对象为磁盘I/O) -t(将系统性能的监控细化到线程级别) <interval> <count>
3、内存监控
内存监控命令是 pidstat -r(内存监控) -p 进程ID <interval> <count>
二、JDK命令
1、jps命令
jps 命令类似于 ps 命令,但是它只列出系统中所有的 java 应用程序。通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 JVM 参数等信息。
2、jstat 命令
jstat 用于观察 Java 应用程序运行时信息的工具,还可以查看堆信息的详细情况,它的基本使用语法为:
jstat -<options> [-t] [-h<lines>] [vmid] [<interval> <count>]
-t 参数可以在输出信息前加上一个 Timestamp 列,显示程序的运行时间
-h参数可以在周期性数据输出时,输出多少行数据后,跟着输出一个表头信息
interval 参数用于指定输出统计数据的周期,单位是毫秒
count 参数用于指定一共输出多少次数据
选项 options 可以由以下值构成:
3、jinfo 命令
jinfo 可以用来查看正在运行的 java 应用程序的扩展参数,甚至支持在运行时修改部分参数,语法结构如下:
jinfo <option> <pid>
其中,options 为以下信息:
4、jstack 命令
jstack 可以导出 java 应用程序的线程堆栈,它能自动进行死锁检查,输出找到的死锁的信息,帮助开发人员解决死锁问题,语法结构如下:
jstack [-l] <pid>
-l 用于打印锁的附加信息
jstack -l pid >C:/deadlock.txt
将输出的所有锁信息保存到相应目录的文件中