一、JPS 进程查看工具
用于列出当前系统中所有正在运行的 Java
进程。它的主要作用是查看 Java
进程的 PID
(进程标识符)和主类名。可以帮助开发人员快速了解系统中正在运行的 Java
进程,对于监控和调试 Java
应用程序非常有用。
用法:
jps [options] [hostid]
options参数选项说明如下:
-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数
示例:
查看当前主机Java
的进程有哪些:
jps
将 main
类或Jar
的全限名 和 jvm 的参数输出
二、jinfo 参数查看工具
用于查看和调整 Java
进程的运行时参数。它可以显示 Java
进程的启动参数、系统属性和 VM
参数,并且可以动态修改某些参数,而无需重新启动 Java
进程。可以帮助开发人员调试和优化 Java
应用程序的运行时参数。
用法:
jinfo [option] pid
options参数选项说明如下:
-flag <name>: 显示指定名称的 JVM 参数的值。
-flags: 显示所有的 JVM 参数及其值。
-sysprops: 显示 Java 系统属性的值。
-sysprops <name>: 显示指定名称的 Java 系统属性的值。
-sysprops <name>=<value>: 设置指定名称的 Java 系统属性的值。
-sysprops <file>: 从指定的文件中加载 Java 系统属性。
-version: 显示 Java 应用程序的版本信息。
-help: 显示帮助信息,列出所有可用选项及其用法。
示例:
查看 PID
为 21592
的 Java
进程的 JVM
启动参数。
jinfo -flags 21592
仅查看 PID
为 21592
的 MaxHeapSize
。
jinfo -flag MaxHeapSize 21592
查看 PID
为 21592
的 Java
进程的系统属性。
jinfo -sysprops 21592
三、jmap 内存查看工具
用于生成 Java
进程的内存映像文件,以及查看 Java
进程的堆内存使用情况、内存分配情况等信息。可以帮助开发人员分析和诊断 Java
进程的内存使用情况,特别是在内存泄漏和性能调优方面。
用法:
jmap [option] pid
options参数选项说明如下:
-heap: 显示 Java 堆内存使用情况。
-histo: 显示 Java 堆内存中对象的统计信息。
-dump: 生成 Java 堆内存转储文件。
-F: 强制生成 Java 堆内存转储文件,即使 Java 进程不响应。
-finalizerinfo: 显示在队列中等待终结的对象信息。
-permstat: 显示永久代内存使用情况。
-clstats: 显示类加载器信息。
-heapsummary: 显示 Java 堆内存摘要信息。
-J<flag>: 传递参数给 JVM。
示例:
查看 PID
为 21592
的 Java
进程的堆内存使用情况。
jmap -heap 21592
查看 PID
为 21592
的 Java
进程的对象的内存分布情况。
jmap -histo 21592
将 PID
为 21592
的 Java
进程的内存映像文件,并保存为 heapdump.bin
文件。
jmap -dump:file=heapdump.bin 21592
生成的文件可使用下面 jhat
读取。
四、jhat 内存映像文件分析工具
用于分析 Java
进程的堆内存转储文件(heap dump file
),并启动一个简单的 Web
服务器,以便用户通过浏览器查看和分析堆内存信息。
用法:
jhat heap_dump_file
其中,heap_dump_file
是要分析的堆内存转储文件的路径。
示例:
使用上一步生成的 heapdump.bin
文件
jhat .\heapdump.bin
浏览器访问 http://localhost:7000
,即可查看分析结果。
五、jstat 信息监视工具
用于监视 Java
虚拟机的各种运行时统计信息,例如堆内存使用情况、垃圾回收情况、类加载情况等。可以帮助开发人员实时监视 Java
进程的运行时统计信息,用于性能分析和调优。
用法:
jstat [option] pid [interval [count]]
options参数选项说明如下:
-class: 显示类加载、卸载信息。
-compiler: 显示即时编译器统计信息。
-gc: 显示垃圾回收统计信息。
-gccapacity: 显示垃圾回收堆容量信息。
-gccause: 显示垃圾回收统计信息,并包括垃圾回收原因。
-gcnew: 显示新生代垃圾回收统计信息。
-gcnewcapacity: 显示新生代堆容量信息。
-gcold: 显示老年代垃圾回收统计信息。
-gcoldcapacity: 显示老年代堆容量信息。
-gcutil: 显示垃圾回收统计信息,包括垃圾回收占用时间、堆空间使用率等。
其中,option
是用于指定要监视的统计信息的选项,pid
是要监视的 Java
进程的 PID
。interval
是指定更新统计信息的时间间隔(以毫秒为单位),默认为 1
秒。count
是指定更新统计信息的次数,默认为无限次。
示例:
以默认的时间间隔和次数,查看 PID
为 21592
的 Java
进程的垃圾回收信息。
jstat -gc 21592
以 1
秒的时间间隔,显示 PID
为 21592
的 Java 进程的垃圾回收信息,共更新 10
次。
jstat -gcutil 21592 1000 10
六、jstack 线程分析工具
用于生成 Java
进程的线程转储信息,以便分析 Java
进程的线程状态、堆栈信息等,通常用于诊断线程死锁、线程等待等问题。
用法:
jstack pid
示例:
查看 PID 为 21592
的 Java
进程的线程转储信息,并将结果输出到命令行终端
jstack 21592
jstack
将打印出线程的状态、线程 ID
、线程堆栈信息等内容,以及任何锁定对象的相关信息。这些信息可以帮助开发人员分析 Java
进程中的线程情况,识别潜在的线程问题,例如死锁、线程阻塞等。
jstack
还支持一些选项,例如 -l
可以输出额外的锁定信息,-F
可以强制生成线程转储信息,即使 Java
进程不响应。
七、jcmd 命令执行工具
用于执行各种诊断命令和操作 Java
进程的功能。它可以列出当前系统中所有正在运行的 Java
进程、显示 Java
进程的基本信息、执行各种诊断命令以及执行其他操作。提供了丰富的诊断功能,用于监控、诊断和管理 Java 进程。
用法:
jcmd [pid | main-class | command] [options]
其中,pid
是要操作的 Java
进程的 PID
,main-class
是要操作的 Java
进程的主类名,command
是要执行的诊断命令。options
是命令的选项和参数。
示例:
查看当前系统中所有正在运行的 Java 进程的 PID 和主类名。
jcmd
查看 PID
为 21592
的 Java
进程的 JVM
启动参数。
jcmd 21592 VM.flags
除了上述示例中列出的命令外,jcmd
还支持其他一些命令,例如 GC.heap_dump
可以生成堆内存转储文件,Thread.print
可以打印线程堆栈信息等。你可以通过输入 jcmd help
查看所有可用的命令和选项。