1、查看java进程参数
jps -l -m -v
2、显示某个jvm参数命令
jinfo -flag PrintGCDetails 9733
3、不重启在线开启GC日志,日志会默认输出到/opt/tomcat8/logs/catalina.out
jinfo -flag +PrintGCDetails 9733
例:
4、输出不同类型的java对象占用内存情况
jmap -histo 9773 >/opt/logs/jmap.txt
5、dump出堆内存
jmap -dump:format=b,file=/opt/logs/heap.hprof 9773
6、jstack打印线程信息
-l打印锁信息
-m打印java和native的帧丝逆袭
-F强制dump,当jstack没有响应时使用
jstack 9773 >> /opt/logs/jstack.txt
7、查看java进程的每一个线程占用CPU的情况;如果有一个线程占用CPU过高,有两种可能:
没有内存了,Java垃圾回收线程不停地运行尝试回收内存,但是每次无法收回
top -Hp 9773
8、sysstat安装
yum -y install sysstat
pidstat -p 9773 1 3 -u -t
-p后面跟进程号
-u表示要查看cpu的情况
1代表每隔1秒钟
3采样3次
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190627173351145.png
这个命令也可以输出占用CPU较高的线程,实际用top -Hp也够用了
10、在线10进制转换成16进制线程号
http://tool.oschina.net/hexconvert/
11、用jstack输出线程信息
jstack 14099 > /opt/logs/tid.txt
这里14099是进程号
可以看出来这里搜索引擎lucene占用很高的CPU