下面我将从命令行工具到图形化工具,由浅入深地为你详细介绍。

使用命令行工具 (快速、轻量)
命令行工具是系统自带的,无需安装,非常适合在服务器或没有图形界面的环境中使用。
jps - Java 进程状态工具 (最推荐)
jps (Java Virtual Machine Process Status Tool) 是 JDK 自带的专门用于查看 Java 进程的命令,它的功能类似于 Linux 下的 ps 命令,但只针对 Java 进程。
基本用法:
打开命令提示符 或 PowerShell,然后输入 jps。

C:\> jps 1234 Jps 5678 MyApplication 9012 AnotherJavaApp
1234,5678,9012是 Java 进程的 ID (PID)。Jps是jps命令自身启动的进程。MyApplication,AnotherJavaApp是 Java 进程的主类名。
常用选项:
-q: 只显示本地 JVM 的 PID,不显示主类名。C:\> jps -q 1234 5678 9012
-l: 显示主类的完整包名,或者 JAR 文件的完整路径。C:\> jps -l 1234 sun.tools.jps.Jps 5678 C:\myapps\MyApplication.jar 9012 com.example.AnotherJavaApp
-v: 显示传递给 JVM 的参数(-Xms, -Xmx 等)。C:\> jps -v 1234 Jps -Dapplication.home=C:\Program Files\Java\jdk-11.0.12 -Xms8m -Xmx256m 5678 MyApplication -Xms512m -Xmx2g -Djava.library.path=C:\path\to\natives
-V: 显示通过 flag 文件传递给 JVM 的参数。-m: 传递给main方法的参数。
小结: jps 是查看 Java 进程 PID 和基本信息最快、最直接的方法。
tasklist - Windows 系统进程列表
tasklist 是 Windows 系统自带的命令,可以查看所有运行的进程,当然也包括 Java 进程。
基本用法:

C:\> tasklist | findstr "java"
| findstr "java"是为了过滤出包含 "java" 关键字的行,让输出更聚焦。
常用选项:
/FI "IMAGENAME eq java": 使用筛选器,只显示进程名为 "java.exe" 的进程。C:\> tasklist /FI "IMAGENAME eq java"
/V: 显示详细信息,包括命令行参数。C:\> tasklist /FI "IMAGENAME eq java" /V
小结: tasklist 功能更通用,可以用来查找任何进程,但不如 jps 专门针对 Java。
wmic - Windows Management Instrumentation 命令行
wmic 是一个更强大的 Windows 命令行工具,可以通过 WMI (Windows Management Instrumentation) 获取系统信息,包括进程。
基本用法:
C:\> wmic process where name="java.exe" call get ProcessId,CommandLine
where name="java.exe": 筛选进程名为 "java.exe"。call get ProcessId,CommandLine: 获取进程 ID 和命令行。
小结: wmic 功能非常强大,但语法相对复杂,适合编写脚本进行自动化处理。
使用图形化工具 (直观、功能强大)
图形化工具提供了更友好的界面,能让你更直观地分析进程的内存、线程、CPU 等信息。
任务管理器 (Task Manager)
这是 Windows 用户最熟悉的工具,内置了对 Java 进程的初步分析能力。
- 按
Ctrl + Shift + Esc打开任务管理器。 - 切换到 "详细信息" (Details) 选项卡。
- 在进程列表中,找到
java.exe。 - 你可以右键点击列标题,添加或删除要显示的信息,如 "命令行" (Command line)、"CPU"、"内存" (Memory) 等。
- 查看线程:右键点击一个 Java 进程,选择 "转到详细信息" (Go to details),然后你可以在详细信息列表的顶部选择 "选择列" (Select columns),勾选 "线程" (Threads) 和 "线程计数" (Thread count),这样就能看到每个线程的 ID 和 CPU 占用情况,这对于定位高 CPU 占用的线程非常有用。
优点:系统自带,无需安装,上手快。 缺点:对于 Java 应用内部的分析(如内存堆栈、GC 信息)能力有限。
VisualVM - JDK 自带的利器
VisualVM 是 JDK 自带的、功能极其强大的 Java 监控和分析工具,它集成了多个 JDK 命令行工具的功能,是 Java 开发和运维人员的必备工具。
如何启动:
- 确保你的 JDK 的
bin目录在系统PATH环境变量中。 - 打开命令提示符,运行
jvisualvm。 - 工具会自动扫描本机所有 Java 进程,并显示在左侧的 "本地" (Local) 节点下。
主要功能:
- 监控: 实时监控 CPU、堆内存、类加载、线程等。
- 线程分析: 可以查看线程的堆栈跟踪,轻松找到死锁或长时间运行的线程。
- 内存分析: 可以生成堆转储文件(Heap Dump),分析对象内存占用,查找内存泄漏。
- 抽样器: 可以对 CPU 或内存进行抽样分析,找到性能瓶颈。
- JMX: 连接到远程开启了 JMX 的 Java 应用进行监控。
优点:功能全面,免费,集成度高。 缺点:界面相对传统,对超大规模集群支持不佳。
JConsole - JDK 自带的轻量级监控工具
JConsole 也是 JDK 自带的,比 VisualVM 更简单,主要用于通过 JMX (Java Management Extensions) 连接到本地或远程的 Java 应用进行基本监控。
如何启动:
在命令行运行 jconsole。
主要功能:
- 查看内存使用情况(堆/非堆)。
- 查看线程状态、检测死锁。
- 查看 CPU 使用情况。
- 查看 MBeans(JMX 管理的 Bean),可以查看和管理应用的内部状态。
优点:轻量级,启动快,适合基础监控。 缺点:功能比 VisualVM 少,界面更简单。
JProfiler / YourKit - 商业级专业工具
如果你的应用非常复杂,或者你需要进行深度性能分析,商业工具是更好的选择。
- JProfiler: 功能非常全面,对内存分析、线程分析、CPU 采样等都做得非常好,界面友好。
- YourKit: 另一款顶级的 Java 性能分析工具,性能优异,尤其在内存分析方面非常强大。
优点:功能最强大,分析能力最深入,用户体验好。 缺点:需要付费购买(通常有试用期)。
总结与选择建议
| 工具名称 | 类型 | 主要用途 | 优点 | 缺点 |
|---|---|---|---|---|
jps |
命令行 | 快速获取 Java 进程的 PID 和基本信息 | JDK自带,轻量,快速 | 功能单一,信息有限 |
tasklist |
命令行 | 在所有进程中查找 Java 进程 | 系统自带,通用性强 | 不如 jps 专门 |
| VisualVM | 图形化 | 全面监控、线程分析、内存分析(堆转储) | 强烈推荐,功能强大,免费 | 界面较旧,不适合集群 |
| JConsole | 图形化 | 基础监控(内存、线程、CPU) | JDK自带,轻量 | 功能非常基础 |
| 任务管理器 | 图形化 | 系统级进程查看,初步的 CPU/内存监控 | 系统自带,直观 | Java 内部分析能力弱 |
| JProfiler/YourKit | 图形化 | 深度性能分析、内存泄漏排查 | 功能最强大,专业 | 需要付费 |
如何选择?
- 只想快速知道 Java 进程的 PID?
- 直接用
jps或jps -l。
- 直接用
- 在服务器上,需要快速检查 Java 进程是否存在或占用了多少资源?
- 使用
tasklist | findstr "java"或jps -v。
- 使用
- 本地开发,想实时监控应用的内存、CPU 和线程状态?
- 首选 VisualVM,它是免费的且功能足够强大。
- 怀疑有内存泄漏,需要生成堆转储文件分析?
- VisualVM 可以轻松完成。
- 怀疑有死锁或高 CPU 占用问题,需要查看线程堆栈?
- VisualVM 或 任务管理器 的线程视图都可以。
- 公司项目,需要专业的、功能强大的性能分析工具?
- 考虑购买 JProfiler 或 YourKit。
对于大多数 Java 开发者和运维人员来说,jps + VisualVM 是最常用且最强大的组合。
