杰瑞科技汇

Windows下Java进程查看有哪些方法?

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

Windows下Java进程查看有哪些方法?-图1
(图片来源网络,侵删)

使用命令行工具 (快速、轻量)

命令行工具是系统自带的,无需安装,非常适合在服务器或没有图形界面的环境中使用。

jps - Java 进程状态工具 (最推荐)

jps (Java Virtual Machine Process Status Tool) 是 JDK 自带的专门用于查看 Java 进程的命令,它的功能类似于 Linux 下的 ps 命令,但只针对 Java 进程。

基本用法:

打开命令提示符 或 PowerShell,然后输入 jps

Windows下Java进程查看有哪些方法?-图2
(图片来源网络,侵删)
C:\> jps
1234 Jps
5678 MyApplication
9012 AnotherJavaApp
  • 1234, 5678, 9012 是 Java 进程的 ID (PID)。
  • Jpsjps 命令自身启动的进程。
  • 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 进程。

基本用法:

Windows下Java进程查看有哪些方法?-图3
(图片来源网络,侵删)
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 进程的初步分析能力。

  1. Ctrl + Shift + Esc 打开任务管理器。
  2. 切换到 "详细信息" (Details) 选项卡。
  3. 在进程列表中,找到 java.exe
  4. 你可以右键点击列标题,添加或删除要显示的信息,如 "命令行" (Command line)"CPU""内存" (Memory) 等。
  5. 查看线程:右键点击一个 Java 进程,选择 "转到详细信息" (Go to details),然后你可以在详细信息列表的顶部选择 "选择列" (Select columns),勾选 "线程" (Threads)"线程计数" (Thread count),这样就能看到每个线程的 ID 和 CPU 占用情况,这对于定位高 CPU 占用的线程非常有用。

优点:系统自带,无需安装,上手快。 缺点:对于 Java 应用内部的分析(如内存堆栈、GC 信息)能力有限。

VisualVM - JDK 自带的利器

VisualVM 是 JDK 自带的、功能极其强大的 Java 监控和分析工具,它集成了多个 JDK 命令行工具的功能,是 Java 开发和运维人员的必备工具。

如何启动:

  1. 确保你的 JDK 的 bin 目录在系统 PATH 环境变量中。
  2. 打开命令提示符,运行 jvisualvm
  3. 工具会自动扫描本机所有 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?
    • 直接用 jpsjps -l
  • 在服务器上,需要快速检查 Java 进程是否存在或占用了多少资源?
    • 使用 tasklist | findstr "java"jps -v
  • 本地开发,想实时监控应用的内存、CPU 和线程状态?
    • 首选 VisualVM,它是免费的且功能足够强大。
  • 怀疑有内存泄漏,需要生成堆转储文件分析?
    • VisualVM 可以轻松完成。
  • 怀疑有死锁或高 CPU 占用问题,需要查看线程堆栈?
    • VisualVM任务管理器 的线程视图都可以。
  • 公司项目,需要专业的、功能强大的性能分析工具?
    • 考虑购买 JProfilerYourKit

对于大多数 Java 开发者和运维人员来说,jps + VisualVM 是最常用且最强大的组合。

分享:
扫描分享到社交APP
上一篇
下一篇