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

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.dtcms.com/a/291653.html

相关文章:

  • 字节跳动视觉算法面试30问全景精解
  • Python爬虫实战:研究PyPLN库相关技术
  • PCIe之P2P应用
  • 从ZooKeeper到KRaft:Kafka架构演进与无ZooKeeper部署指南
  • Android perfetto 工具使用
  • 【前端】ikun-pptx编辑器前瞻问题二: pptx的压缩包结构,以及xml正文树及对应元素介绍
  • 从重复劳动到自动化:火语言 RPA 的实践与思考
  • python办自动化--读取邮箱中特定的邮件,并下载特定的附件
  • 物联网_TDengine_EMQX_性能测试
  • RabbitMQ-交换机(Exchange)
  • 【无标题】buuctf-re3
  • 解决pip指令超时问题
  • MCU中的总线桥是什么?
  • Windows PE文件内未用空间学习
  • Collection接口的详细介绍以及底层原理——包括数据结构红黑树、二叉树等,从0到彻底掌握Collection只需这篇文章
  • wed前端简单解析
  • wangEditor5添加键盘事件/实现定时保存功能
  • 【文献笔记】ARS: Automatic Routing Solver with Large Language Models
  • SpringMVC快速入门之启动配置流程
  • C语言基础:函数练习题
  • 【洛谷】用两个数组实现静态单链表、静态双向链表,排队顺序
  • C#初学知识点总结
  • 假发行业数字化突围,外贸ERP重构外协管理引擎,助力效率飞跃
  • 智联智造:国内新能源汽车品牌AGV小车无线控制系统创新实践
  • 面试题:sql题一
  • 前端项目启动后,只有localhost地址,没有ip地址
  • vs2017 c++ 使用sqlite3数据库
  • Java 邂逅 WebSocket:解锁实时通信的无限可能​
  • Flutter基础(前端教程①⑦-Column竖直-Row水平-Warp包裹-Stack堆叠)
  • 【计算机网络 篇】TCP基本认识和TCP三次握手相关问题