找到占用CPU最高的进程
代码语言:javascript复制top //查询进程
找到进程对应线程
代码语言:javascript复制top -Hp 14327 //pid(进程)
打印堆栈信息
代码语言:javascript复制printf '%xn' 14328 //获取线程的16进制
代码语言:javascript复制jstack 14327(进程号,不是线程id) | grep 37f8 //堆栈线程是16进制,直接过滤需要的线程
直接定位到代码所在的类,以及行号,再去分析代码
常用排查问题命令
查看内存结构,如新生代,老年代,持久代等
代码语言:javascript复制jmap -heap 14327
导出java堆的快照,可以用Jconsole等工具分析的日志
代码语言:javascript复制jmap -dump:format=b,file=./heap.hprof 14327
资源和性能进行实时命令行监控,堆大小和垃圾回收
代码语言:javascript复制jstat -gcutil 14327 10000 3 每个10000毫秒打印一次,打印3次 堆大小情况,垃圾回收
环境变量和虚拟机参数
代码语言:javascript复制jinfo 14327
其他命令
- jps,用于查找java进程,通常使用ps命令代替
- jhat,用于分析内存堆的快照文件
- javah,生产java类中本地方法的C头文件,一般用于开发JNI库
- jdb,远程调式,用于线上定位问题
- 图形界面工具常用于Jconsole,JMAT,JProfiler,JvisualVM