写点什么

如何查看 Java 进程和线程

作者:李子捌
  • 2021 年 12 月 06 日
  • 本文字数:1234 字

    阅读完需:约 4 分钟

1、Windows

通过任务管理器查看进程信息

在进程页签中查看 Java 进程,我是 idea 启动,因此可以在 idea 下查看相关进程



此外可以在详细信息页签下 Ctrl+f 搜索 java



通过控制台查看进程信息

进入 CMD,键入 tasklist,可以查看所有的进程信息,包括进程 ID、内存使用情况



查看 Java 相关的进程,可以添加过滤条件 tasklist | findstr "java" ,需要注意 windows 中字符串需要使用双引号,要不就不加也是可以的



如果是在 IDEA 中启动程序,可以借用 idea 的 Terminal 终端执行命令



taskkill 杀死进程

杀死进程使用 taskkill /pid 指定进程 id,如果无法杀死,可以尝试强制杀死 taskkill /pid 进程 id -t -f



可以看到 idea 控制台中进程已结束



通过 tasklist | findstr 进程 id 已经无法查询到该进程,说明进程终止成功



2、Linux

ps -ef 命令查看

Linux 下可以通过 ps -ef 查看所有进程信息,具体参数说明如果不知道的可以看看菜鸟网站的简单介绍,如下链接可以直达。

https://www.runoob.com/linux/linux-comm-ps.html



提供一个测试 Java 类,为防止线程运行结束,代码中使用了 while(true)循环,同时防止完全占用 CPU,使用 TimeUnit.SECONDS.sleep(2)睡眠 2 秒,让出 CPU 执行时间。



通过 javac ThreadDemo2.java 编译 ThreadDemo2.java 类,生成对应的 class 文件-ThreadDemo2.class;之后通过 java -cp / com.lzb.concurrency.demo1.ThreadDemo2 运行



查看 ThreadDemo2 的进程信息 ps -ef | grep ThreadDemo2(注意需要新开一个 Shell 窗口



kill 杀死进程

使用 kill 进程 id,杀死进程



top 命令查看

查看所有进程信息,可以使用 top 命令



查看指定进程的信息,使用 top -p 进程 id,查看指定进程下的所有线程信息,可以使用 top -H -p 进程 id

具体参数描述可以参考下菜鸟网站的简单介绍,如下链接可以直达。

https://www.runoob.com/linux/linux-comm-top.html



3、Java 自带工具

jps 查看进程 id

Java 自带的命令就不区分平台了,如果需要查看所有的 Java 进程 id,可以使用 jps



jstack 查看进程中的线程状态

查看某个 Java 进程的线程状态,可以结合 jps 一起使用,先通过 jps 查询进程的 id,然后通过 jstack 查询进程中的所有线程的状态,需要注意的是 jstack 查询的线程状态,是该进程在查询时刻的线程状态(瞬时态)

信息比较多并未展示完全




jconsole 图形化界面

jconsole 是 jdk 自带的监控内存、线程、类等资源情况的图形化界面。

在 windows 环境下,可以直接双击运行 jdk 安装目录 bin 文件夹下的 jconsole.exe 文件



如果是本地 Java 进程,可以勾选本地进程,然后再本地进程中找到你的 Java 进程,选中后点击连接即可



本地连接不需要密码验证,选择不安全连接即可,如下即为 jconsole 的界面



如果 java 进程运行在远程 Linux 服务器上,则需要使用远程连接



远程连接需要 ip port username password 等信息,此时我们需要使用如下方式运行 Java 类

java -Djava.rmi.server.hostname='ip 地址' -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port='端口' -Dcom.sun.management.jmxremote.ssl=是否安全连接 -Dcom.

sun.management.jmxremote.authenticate=是否需要认证 java 类

发布于: 刚刚阅读数: 2
用户头像

李子捌

关注

华为云享专家 2020.07.20 加入

公众号【李子捌】

评论

发布
暂无评论
如何查看Java进程和线程