提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
记录下自己使用过的jdk 指令
一、jps
在Java中,jps是一个用于查看Java进程的命令行工具。它可以显示当前系统中正在运行的Java进程的进程ID(PID)和主类名。
以下是一些常用的jps命令选项:
jps:显示当前系统中所有正在运行的Java进程的PID和主类名。
jps -l:显示当前系统中所有正在运行的Java进程的PID、主类名和JAR文件路径。
jps -m:显示当前系统中所有正在运行的Java进程的PID、主类名和传递给主类的参数。
jps -v:显示当前系统中所有正在运行的Java进程的PID、主类名和传递给主类的参数,以及JVM的启动参数。
使用jps命令可以方便地查看Java进程的信息,特别是在需要查找特定进程或调试Java应用程序时非常有用。
在自己的 idea 中的 terminal 窗口中输入该指令可以看到以下的进程
lb@lbpc:~/IdeaProjects/xxx $ jps
<pid> 主类名
26929 Launcher
5686 Main
4822 LbCommunitymanagemensystemApplication //这个进程就是 我刚起项目的进程
// 后期通过 jstack 可以看到项目运行进程信息
6198 st
26856 Launcher
12108 Jps
4815 Launcher
如果你的服务器中部署了多个项目,使用jps命令 发现 主类名或者项目信息不好定位:
[root@xxxxxxxxxxx tomcat-xxxx]# jps
8624 Bootstrap
12642 WrapperSimpleApp
20966 Bootstrap
1194 Bootstrap
12507 Bootstrap
28860 Jps
18638 Bootstrap
15135 Bootstrap
//像这样, 这里 的Bootstrap都是我服务器运行的项目,这样就可以 使用
// ps -ef|grep tomcat 或者 ps -ef|grep java 指令找到对应的 项目信息 和他的pid
二、jstack
jstack是Java中一个常用的命令行工具,用于打印指定Java进程的堆栈信息。它可以帮助开发者和运维人员诊断和分析Java应用程序在运行过程中出现的问题,定位异常原因,进行优化,并避免类似问题再次发生。
jstack指令的主要功能有两个:
针对活着的进程(running processes)进行本地(local)或远程(remote)线程 dump。
针对core文件(core dump)获取Java堆栈信息(Java stack trace)和本地(native)堆栈信息。
在使用jstack时,需要指定相应的选项和参数。以下是一些常用的选项和参数:
-l:表示打印线程列表。
-m:表示打印进程内存信息。
-o:表示将堆栈信息输出到文件。
-p:表示指定要分析的进程ID(process ID)。
-r:表示打印线程的实时状态(real-time status)。
-t:表示打印线程跟踪(thread trace)。
-c:表示打印类加载器信息。
-f:表示指定要分析的core文件。
线程的状态分析:
死锁, Deadlock(重点关注)
执行中,Runnable
等待资源, Waiting on condition(重点关注)
等待获取监视器, Waiting on monitor entry(重点关注)
暂停,Suspended
对象等待中,Object.wait() 或 TIMED_WAITING
阻塞, Blocked(重点关注)
停止,Parked