常用的监控和内存诊断工具
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11462230.html
Linux命令行工具之top命令
top命令是在Linux下最常用的命令之一,它可以实时显示正在执行进程的CPU使用率、内存使用率以及系统负载等信息。其中上半部分显示的是系统的统计信息,下半部分显示的是进程的使用率统计信息。
除了简单的top之外,还可以通过top -Hp pid查看具体线程使用系统资源情况
Linux命令行工具之vmstat命令
vmstat是一款指定采样周期和次数的功能性监测工具,它不仅可以统计内存的使用情况,还可以观测到CPU的使用率、swap的使用情况。但vmstat一般很少用来查看内存的使用情况,而是经常被用来观察进程的上下文切换。
Linux命令行工具之pidstat命令
之前的top和vmstat两个命令都是监测进程的内存、CPU以及I/O使用情况,而pidstat命令则是深入到线程级别。
JDK工具之jstat命令
jstat可以监测Java应用程序的实时运行情况,包括堆内存信息以及垃圾回收信息。
1 sudo -u haha jstat -gcutil 41565 2000
JDK工具之jstack命令
这个工具是一种线程堆栈分析工具,最常用的功能就是使用 jstack pid 命令查看线程的堆栈信息,通常会结合top -Hp pid 或 pidstat -p pid -t一起查看具体线程的状态,也经常用来排查一些死锁的异常。每个线程堆栈的信息中,都可以查看到线程ID、线程的状态(wait、sleep、running 等状态)以及是否持有锁等。
1 ps -ef | grep app 2 3 top -H -p 41565 4 5 printf "%x\n" 41575 6 7 sudo -u haha jstack 41565 > ~/jstack_0403.txt
JDK工具之jmap命令
使用jmap查看堆内存初始化配置信息以及堆内存的使用情况。那么除了这个功能,其实还可以使用jmap输出堆内存中的对象信息,包括产生了哪些对象,对象数量多少等。
可以用jmap来查看堆内存初始化配置信息以及堆内存的使用情况
可以使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象
1 sudo -u haha jmap -histo:live 41565 > ~/jmap.txt
Reference
https://time.geekbang.org/column/article/108582