如何查看Java进程和线程?你get了没?

  •  备战2022春招或暑期实习,祝大家每天进步亿点点!Java并发编程Day5
  • 本篇总结的是 如何在Java中避免创建不必要的对象,后续会每日更新~
  • 关于《我们一起学Redis》、《我们一起学HarmonyOS》等知识点可以查看我的往期博客
  • 相信自己,越活越坚强活着就该逢山开路,遇水架桥!生活,你给我压力,我还你奇迹!

目录

1、Windows

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

通过控制台查看进程信息

taskkill 杀死进程

2、Linux

ps -ef 命令查看

kill 杀死进程

top 命令查看

3、Java自带工具

jps 查看进程id

jstack 查看进程中的线程状态

jconsole 图形化界面


1、Windows

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

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

image.png

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

image.png

通过控制台查看进程信息

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

image.png

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

image.png

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

image.png

taskkill 杀死进程

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

image.png

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

image.png

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

image.png

2、Linux

ps -ef 命令查看

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

Linux ps 命令 | 菜鸟教程

image.png

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

image.png

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

image.png

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

image.png

 

kill 杀死进程

使用kill 进程id,杀死进程

image.png

top 命令查看

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

image.png

查看指定进程的信息,使用top -p 进程id,查看指定进程下的所有线程信息,可以使用top -H -p 进程id
具体参数描述可以参考下菜鸟网站的简单介绍,如下链接可以直达。

Linux top 命令 | 菜鸟教程

image.png

3、Java自带工具

jps 查看进程id

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

image.png

jstack 查看进程中的线程状态

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

image.png

image.png

jconsole 图形化界面

jconsole是jdk自带的监控内存、线程、类等资源情况的图形化界面。
在windows 环境下,可以直接双击运行jdk安装目录bin文件夹下的jconsole.exe文件

image.png

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

image.png

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

image.png

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

image.png

远程连接需要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类

?? 关注公众号 获取更多资料??
 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>