Windows下进程、线程指令合集
一、前言
为了在本地查看java程序运行后的线程,除了使用cmd命令、还可用到wmic、PowerShell,同时也为了怕被忘记,我就记录一下了。
二、命令介绍
1.cmd
命令提示符是Windows早期版本中的命令行界面,用于执行基本的系统管理任务和文件操作,对于老旧版本的Windows系统,cmd仍然是主要的命令行工具。
2.wmic
wmic 是一个用于管理和查询系统资源的命令行工具,基于WMI(Windows Management Instrumentation),可以获取和设置系统硬件、软件、操作系统等的详细信息。
常用命令包括 wmic process list brief(列出进程)、wmic cpu get loadpercentage(获取CPU负载)、wmic logicaldisk get size,freespace(获取磁盘空间信息)等。
使用方法是直接在cmd框中输入wmic指令即可。
3.PowerShell
PowerShell 是一个功能强大的脚本语言环境,用于管理和自动化系统任务;支持脚本编写、对象操作和高级的系统管理功能;内置了丰富的命令和模块,可以执行几乎所有的系统管理任务。
功能非常强大,支持复杂的脚本编写和高级的对象操作,提供了大量的内置命令和模块,可以执行几乎所有的系统管理任务。内置在所有较新的Windows版本中(Windows 7 及更高版本),并且在Windows 10和Windows 11中得到了进一步的增强。
通过win+X,或者右击win图标,选择Windows PowerShell,弹出一个蓝色的框。
三、命令使用
下面以程序名开头,获取进程ID,再根据进程ID查询详情(包括状态、线程数等),最后再根据进程ID,查询下面的所有线程并列出线程信息。
1.根据程序名获取进程
1 | tasklist | findstr "java" |
2.根据进程ID查看进程信息
1 | tasklist /FI "PID eq 1234" /V |
3.根据进程ID获取详细信息,线程总数
这里有有一个需要注意的点是,像Java程序运行后,JVM除了主线程外,还会开启多个子线程用于垃圾回收等操作。所以就算在程序中只开启了一个线程,加上自带的都会有十几个子线程。
而通过任务管理器,在详细信息中找到的进程,然后右键 “分析等待链”,列出的线程也就展示前两个的线程ID,而通过PowerShell可列出所有线程。
1 | wmic process where processid=1234 get processid,threadcount |
4.根据进程ID列出所有线程
1 | Get-Process -Id 1234 | Select-Object -ExpandProperty Threads |
5.直接根据程序名列出所有线程
1 | Get-Process -Name notepad | Select-Object -ExpandProperty Threads |
四、写在后面
在计算机科学中,进程、线程和协程是用于管理和调度任务的基本概念。而进程是操作系统进行资源分配和调度的基本单位。每个进程都有自己的独立地址空间,包括代码、数据和堆栈;进程可以包含一个或多个线程,并且每个进程由操作系统独立管理。
线程是进程中的执行单元,是操作系统进行调度的基本单位,线程共享进程的资源,如内存空间、文件句柄等,但每个线程有自己的堆栈、程序计数器和局部变量。
协程是一种用户态轻量级线程,可以暂停和恢复执行,而不像线程那样需要操作系统支持。协程可以理解为在单个线程中交叉执行的函数,作用还是提升单线程的利用率,减少资源占用。
而且他虽然不是由操作系统调度,但是也不是自己的业务程序分配哪个先哪个后,而是由支持协程的扩展或编程语言的运行时,里面封装调度器进行管理,比如执行到业务中定义的一个有IO操作的协程就会马上切到下一个协程,等上一个IO接触就返回给回调函数。







