定位排查问题时最为常⽤命令包括:
jps(进程)、jmap(内存)、jstack(线程)、jinfo(参数)等。
jps:查询当前机器所有Java进程信息
jmap:输出某个 Java 进程内存情况
jstack:打印某个 Java 线程的线程栈信息
jinfo:⽤于查看 jvm
jps找进程
jps(Java Virtual Machine Process Status Tool)⽤于输出当前⽤户启动的所有进程 ID,当线上发现故障或者问题时,利⽤ jps 快速定位对应的 Java进程 ID。
命令:jps -m
参数解释:
m:输出传⼊ main ⽅法的参数
l:输出完全的包名,应⽤主类名,jar的完全路径名
当然也可以用ps -ef | grep java找
或者自己学习:
jmap(Java Memory Map)
jmap(Java Memory Map)可以输出所有内存中对象的⼯具,甚⾄可以将 VM 中的 heap,以⼆进制输出成⽂本,使⽤⽅式如下: jmap -heap PID(输出当前进程JVM堆内存新⽣代、⽼年代、持久代、GC算法等信息)
jinfo(java info参数)
jinfo可以⽤来查看正在运⾏的 java 应⽤程序的扩展参数,包括Java System属性和JVM命令⾏参数;也可以动态的修改正在运⾏的 JVM ⼀些参数。
命令:jinfo pid
jinfo 64421
jstack(java stack栈)
查看某个线程的栈信息
- top -Hp pid 找哪个线程占cpu men高
- 将其转换为16进制形式(因为 java native 线程以16进制形式输出) printf '%x\n' pid
- 打印栈信息:jstack 进程PID| grep '0x5605 16进制' -A 50 --color
示例可参考:JavaWeb在线问题.Linux服务器CPU核查_闲猫的博客-CSDN博客