当前位置: 首页 > java >正文

JVM:工具

JVM

  • jps
  • jstat
  • jmap
  • jhat
  • jstack
  • jconsole
  • jvisualvm

在这里插入图片描述

jps

jps( Java Virtual Machine Process Status Tool ),是 JDK 中的一个命令行工具,用于列出当前正在运行的 JVM 实例的信息。其对于监控和管理运行在多个 JVM 上的 Java 应用程序特别有用,因为可以快速提供 JVM 进程的标识符( PID )和主类名(或 JAR 文件名),以及其他可能的信息,如 JVM 参数。

基本语法

jps [options] [hostid]options:可选参数,用于指定输出信息的详细程度。
hostid:RMI 注册表中注册的主机名,支持远程监控主机上的 Java 程序(需要安装 jstatd )。如果不指定,则默认为本地主机。常用选项:
-l:长格式输出,包括 JVM 的完整命令行参数
-m:输出传递给 main 方法的参数
-v:输出 JVM 的启动参数
-q:只输出进程 ID ,不输出其他信息
-h 或 --help:显示帮助信息
--version:显示版本信息

jstat

jstat(JavaVirtualMachine statistics monitoring tool),是 JDK 中的一个轻量级小工具,主要用于监控 Java 应用程序的资源和性能,可以通过 JVM 内建的指令对 Java 应用程序的堆内存、类加载、JIT 编译等信息进行实时监控。

基本语法

jstat [option] vmid [interval[s|ms]] [count]option:需要监控的数据类型,如 -gc 、-class 等。
vmid:JVM 的标识符,通常是 Java 进程的 ID ( pid )。
interval:采样间隔,单位可以是秒( s )或毫秒( ms ),默认为毫秒。
count:采样次数,如果省略,则默认会一直采样直到用户中断。常用选项:
-class:监控类装载、卸载的数量,以及类装载器的总耗时
-compiler:显示 JIT 编译的相关信息
-gc:监控与垃圾回收相关的堆内存统计信息
-gccapacity:监控各个内存区域(年轻代、老年代、元空间等)的容量及其当前大小
-gccause:监控垃圾回收的相关信息,包括上一次 GC 和当前(如果有)的 GC 原因
-gcnew:显示新生代的详细信息
-gcnewcapacity:显示新生代对象的信息及其占用量,包括各个内存区域的最大容量、当前容量等信息
-gcold:显示老年代 GC 的详细情况
-gcoldcapacity:显示老年代的大小
-gcutil:显示垃圾回收信息,但主要以百分比形式展示各个内存区域的使用情况
-gcmetacapacity:显示元空间中对象的信息及其占用量
-printcompilation:输出 JIT 编译的方法信息,包括编译的方法名称、编译类型等信息
-t:可以在打印的列加上 Timestamp 列,用于显示系统运行的时间
-h:可以在周期性数据输出时,指定输出多少行以后输出一次表头,方便阅读

jmap

jmap( Java Virtual Machine Memory Map ),是 JDK 中的一个命令行工具,用于生成 JVM 的堆转储快照( dump 文件),以及查看堆内对象实例的统计信息、类加载器的信息以及 finalizer 队列等。

基本语法

jmap [option] <pid>  
jmap [option] <executable> <core>  
jmap [option] [server-id@]<remote-hostname-or-IP>option:可选参数,用于指定要执行的操作,如查看堆内存信息、生成堆转储快照等。
pid:要打印配置信息的 JVM 的进程 ID 。
executable:产生 core dump 的 Java 可执行文件。
core:需要打印配置信息的 core dump 文件。
server-id:可选的唯一 ID ,用于在相同的远程主机上标识多个调试服务器。
remote-hostname-or-IP:远程调试服务器的 IP 地址或主机名。常用选项:
-heap:打印 Java 堆的概要信息,包括使用的垃圾回收算法、堆配置参数和各代中堆内存的使用情况
-histo[:live]:打印 Java 堆中对象的直方图,包括每个类的对象数量、占用内存大小和类的完全限定名。如果指定了 :live ,则只统计存活的对象
-clstats:打印类加载器的统计信息,包括类加载器的名称、已加载的类的数量、所占用的字节数、父类加载器地址等信息
-finalizerinfo:打印在 F-Queue 队列中等待 Finalizer 线程执行 finalize 方法的对象信息
-dump:<dump-options>:生成 Java 堆转储快照文件,该文件可以使用 MAT( Memory Analyzer Tool )、VisualVM 或 jhat 等工具进行查看
-F:当指定的 Java 进程没有响应时,强制 jmap 执行 dump 或 histo 操作

jhat

jhat(Java Virtual Machine Heap Analysis Tool),是 JVM 中的一个堆转储快照分析工具,用于分析由 jmap 或其他工具生成的 heapdump 文件。jhat 通过建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果。

基本语法

jhat [options] heap-dump-fileoptions:用于调整jhat 的行为或输出。
heap-dump-file:要分析的 Java 堆转储文件的路径。常用选项:
-J<flag>:可以在启动 JVM 时传入一些启动参数
-stack false|true:关闭跟踪对象分配调用堆栈。默认值为 true ,若分配位置信息在堆转储中不可用,则必须将此标志设置为 false 。
-refs false|true:关闭对象引用跟踪。默认情况下,返回的指针是指向其他特定对象的对象
-port port-number:设置 jhat HTTP 服务器的端口号,默认值是7000
-exclude exclude-file:指定对象查询时需要排除的数据成员列表文件
-baseline exclude-file:指定一个基准堆转储( baseline heap dump )。在两个 heap dump 文件中有相同 object ID 的对象会被标记为不是新的( marked as not being new ),其他对象被标记为新的( new )。在比较两个不同的堆转储时特别有用
-debug int:设置 debug 级别,0表示不输出调试信息。值越大则表示输出更详细的 debug 信息
-version:启动后只显示版本信息就退出

jstack

jstack( Java Stack Trace ),是 JVM 中的一个堆栈跟踪工具,用于生成 JVM 当前时刻的线程快照(当前 JVM 内每一条线程正在执行的方法堆栈的集合),适用于 Java 应用程序、分析性能问题、诊断死锁等场景。

基本语法

jstack [option] pid  
jstack [option] executable core  
jstack [option] [server-id@]remote-hostname-or-IPoption:可选的命令行参数选项。
pid:目标 Java 进程的进程 ID 。
executable:Java 可执行文件。
core:core dump 文件。
[server-id@]remote-hostname-or-IP:远程调试服务的地址,其中 server-id 是可选的,用于指定远程调试服务器的唯一标识符。常用选项:
-l:长列表模式,显示关于锁的附加信息
-m:混合模式,打印 Java 和本地 C/C++ 框架的所有栈信息
-F:当正常输出的请求不被响应时,强制输出线程堆栈信息
-h 或 -help:显示帮助信息

jconsole

jconsole( Java Monitoring and Management Console ),是一个基于 JMX(Java Management Extensions)的可视化监视和管理工具,允许用户连接到 Java 应用程序,并监控其内存使用、线程活动、类加载情况、垃圾回收行为等关键性能指标。

基本语法

jconsole [options] [connection ...]options:可选参数选项。
connection ...:连接信息,可以是本地 Java 进程的 PID ,也可以是远程主机的名称或 IP 地址加上 JMX 代理的端口号。常用选项:
-interval=n:设置监视图的刷新间隔时间(秒),默认值为4秒。这个选项允许用户根据需要调整监视数据的更新频率
-J<flag>:向底层Java虚拟机传递参数。<flag> 是指 JVM 的参数,而 -J 是指明 jconsole 将这些参数传递给自身的 JVM 实例
-notile:在某些情况下,jconsole 的图形界面可能会以平铺方式显示多个标签页,而这个选项可以阻止这种行为,使界面更加紧凑
-pluginpath <path>:指定 jconsole 插件的路径。这个选项允许用户加载自定义的插件来扩展 jconsole 的功能
-version:显示 jconsole 的版本信息
-help:显示帮助信息

jvisualvm

jvisualvm(All-in-One Java Troubleshooting Tool),是一个功能强大、集成了多个 JDK 命令行工具的可视化工具,提供了图形用户界面和强大的分析能力,能够直观地了解 Java 应用程序的运行状况和对 Java 应用程序进行性能分析和调优。还可以生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析等。jvisualvm 不仅支持本地 JVM 进程的监控,还支持远程 JVM 进程的监控,这需要通过 JMX(Java Management Extensions)技术实现。

使用方法

  1. 启动 jvisualvm
    在 Windows 系统上,可以通过在命令行中输入 jvisualvm 命令或双击 %JAVA_HOME%/bin 目录下的 jvisualvm.exe 文件来启动 jvisualvm 。
    在 Linux 或 macOS 系统上,可以通过在终端中输入 jvisualvm 命令来启动。
  2. 连接 JVM 进程
    启动后,jvisualvm 会自动检测并列出当前系统上所有可用的 JVM 进程。用户可以选择一个或多个进程进行连接,并开始监视和分析。
  3. 查看和分析数据
    连接后,用户可以在 jvisualvm 的图形界面中查看 JVM 的性能指标、内存使用情况、线程状态等信息,也可以使用内置的分析工具或安装插件来进行更深入的分析和调优。
http://www.xdnf.cn/news/15992.html

相关文章:

  • A316-HF-I2S-V1:USB TO I2S HiFi音频转换器评估板技术解析
  • C语言---VSCODE的C语言环境搭建
  • VR技术在元宇宙游戏中的作用及发展前景深度分析
  • 基于mysql云数据库创建和美化表格,对比分析Power BI和Quick BI的功能优劣
  • 《C++初阶之STL》【string类:详解 + 实现】
  • “我在京东外卖上的120天”
  • 记一次flink资源使用优化
  • 操作系统 —— A / 概述
  • 探索飞算JavaAI:AI赋能Java开发的新范式
  • 内网穿透利器:基于HTTPHTTPS隧道的代理工具深度解析
  • Vue3中watch和watchEffect区别和用法
  • 电商项目_秒杀_架构及核心
  • 借助AI学习开源代码git0.7之七commit-tree
  • OpenCV基本的图像处理
  • 风险识别清单:构建动态化的风险管理体系
  • 网络安全第三次作业
  • 决策树学习笔记
  • K 近邻算法(K-Nearest Neighbors, KNN)详解及案例
  • React 英语单词补全游戏——一个寓教于乐的英语单词记忆游戏
  • 什么是AI思维:它是智能优先与世界模型重构商业逻辑
  • 【黑马SpringCloud微服务开发与实战】(四)微服务02
  • cuda编程笔记(9)--使用 Shared Memory 实现 tiled GEMM
  • 【操作篇】群晖NAS用root权限直接访问系统分区文件
  • 【openbmc6】entity-manager
  • 网络数据分层封装与解封过程的详细说明
  • 安装pytorch(cpu版)
  • 《C++》范围 for 循环,空指针nullptr
  • RSTP协议
  • HOT100——图篇Leetcode207. 课程表
  • Linux C 多线程基本操作