JVM 常用监控工具介绍和使用

一、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: 显示帮助信息,列出所有可用选项及其用法。

示例

查看 PID21592Java 进程的 JVM 启动参数。

jinfo -flags 21592

在这里插入图片描述
仅查看 PID21592MaxHeapSize

jinfo -flag MaxHeapSize 21592

在这里插入图片描述

查看 PID21592Java 进程的系统属性。

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。

示例

查看 PID21592Java 进程的堆内存使用情况。

jmap -heap 21592

在这里插入图片描述

查看 PID21592Java 进程的对象的内存分布情况。

jmap -histo 21592

在这里插入图片描述

PID21592Java 进程的内存映像文件,并保存为 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 进程的 PIDinterval 是指定更新统计信息的时间间隔(以毫秒为单位),默认为 1 秒。count 是指定更新统计信息的次数,默认为无限次。

示例

以默认的时间间隔和次数,查看 PID21592Java 进程的垃圾回收信息。

jstat -gc 21592

在这里插入图片描述

1 秒的时间间隔,显示 PID21592 的 Java 进程的垃圾回收信息,共更新 10 次。

jstat -gcutil 21592 1000 10

在这里插入图片描述

六、jstack 线程分析工具

用于生成 Java 进程的线程转储信息,以便分析 Java 进程的线程状态、堆栈信息等,通常用于诊断线程死锁、线程等待等问题。

用法

jstack pid

示例

查看 PID 为 21592Java 进程的线程转储信息,并将结果输出到命令行终端

jstack 21592

在这里插入图片描述

jstack 将打印出线程的状态、线程 ID、线程堆栈信息等内容,以及任何锁定对象的相关信息。这些信息可以帮助开发人员分析 Java 进程中的线程情况,识别潜在的线程问题,例如死锁、线程阻塞等。

jstack 还支持一些选项,例如 -l 可以输出额外的锁定信息,-F 可以强制生成线程转储信息,即使 Java 进程不响应。

七、jcmd 命令执行工具

用于执行各种诊断命令和操作 Java 进程的功能。它可以列出当前系统中所有正在运行的 Java 进程、显示 Java 进程的基本信息、执行各种诊断命令以及执行其他操作。提供了丰富的诊断功能,用于监控、诊断和管理 Java 进程。

用法

jcmd [pid | main-class | command] [options]

其中,pid 是要操作的 Java 进程的 PIDmain-class 是要操作的 Java 进程的主类名,command 是要执行的诊断命令。options 是命令的选项和参数。

示例

查看当前系统中所有正在运行的 Java 进程的 PID 和主类名。

jcmd

在这里插入图片描述

查看 PID21592Java 进程的 JVM 启动参数。

jcmd 21592 VM.flags

在这里插入图片描述

除了上述示例中列出的命令外,jcmd 还支持其他一些命令,例如 GC.heap_dump 可以生成堆内存转储文件,Thread.print 可以打印线程堆栈信息等。你可以通过输入 jcmd help 查看所有可用的命令和选项。

相关推荐

  1. docker——监控以及监控工具介绍docker部署

    2024-03-10 18:14:04       61 阅读
  2. NPM介绍命令的使用(带示例)

    2024-03-10 18:14:04       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 18:14:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 18:14:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 18:14:04       82 阅读
  4. Python语言-面向对象

    2024-03-10 18:14:04       91 阅读

热门阅读

  1. VUE2升级#总结1

    2024-03-10 18:14:04       46 阅读
  2. Pytho爬取音乐

    2024-03-10 18:14:04       38 阅读
  3. 计算机等级考试:信息安全技术 知识的四

    2024-03-10 18:14:04       44 阅读
  4. 非插件方式为wordpress添加一个额外的编辑器

    2024-03-10 18:14:04       37 阅读
  5. 算法练习第十二天|二叉树的递归遍历和迭代遍历

    2024-03-10 18:14:04       42 阅读
  6. 大数据架构

    2024-03-10 18:14:04       38 阅读
  7. typedef 别名的定义和使用

    2024-03-10 18:14:04       48 阅读
  8. springboot 下载 Excel 文件的 Controller 层案例

    2024-03-10 18:14:04       44 阅读
  9. AI辅助研发,引领科技新潮流

    2024-03-10 18:14:04       45 阅读