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.pswp.cn/diannao/92869.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92869.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92869.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch Circuit Breaker 全面解析与最佳实践

一、Circuit Breaker 简介 Elasticsearch 是基于 JVM 的搜索引擎&#xff0c;其内存管理十分重要。为了避免单个操作或查询耗费过多内存导致节点不可用&#xff0c;Elasticsearch 引入了 Circuit Breaker&#xff08;熔断器&#xff09;机制。当内存使用达到熔断器预设阈值时&a…

ARM-定时器-定时器函数封装配置

以TIMER7为例&#xff0c;对定时器函数进行封装注意事项&#xff1a;GD32中TIMER7是高级定时器&#xff0c;相关详细请参考上一篇文章。main.c//main.c#include "gd32f4xx.h" #include "systick.h" #include <stdio.h> #include "main.h" …

【日志】unity俄罗斯方块——边界限制检测

Bug修复记录 项目场景 尝试使用Unity独自制作俄罗斯方块&#xff08;也许很没有必要&#xff0c;网上随便一搜就有教程&#xff09; 问题描述 俄罗斯方块的边缘检测出错了&#xff0c;对方块进行旋转后&#xff0c;无法到达最左侧或者最下侧的位置&#xff0c;以及其他问题。演…

C++ string:准 STL Container

历史STL 最初是一套独立的泛型库&#xff08;Alexander Stepanov 等人贡献&#xff09;&#xff0c;后来被吸纳进 C 标准库&#xff1b;std::basic_string 则是早期 C 标准&#xff08;Cfront / ARM 时代&#xff09;就存在的“字符串类”&#xff0c;并非 STL 原生物。std::st…

Golang学习笔记--语言入门【Go-暑假学习笔记】

目录 基础语法部分相关概念 基础语法部分概念详解 可见性 导包 内部包 运算符 转义字符 函数 风格 函数花括号换行 代码缩进 代码间隔 花括号省略 三元表达式 数据类型部分相关概念 数据类型部分概念详解 布尔类型 整型 浮点型 复数类型 字符类型 派生类型…

linux中kill 命令使用详解

在Linux系统里&#xff0c;kill命令的主要功能是向进程发送信号&#xff0c;以此来控制进程的运行状态。下面为你详细介绍它的使用方法&#xff1a; 基础语法 kill [选项] [进程ID]进程ID也就是PID&#xff0c;可通过ps、pgrep或者top等命令来获取。 常用信号及其含义 信号可以…

Nginx 安装与 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服务器

Nginx 安装与 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服务器 一、Nginx安装 1. 安装依赖项 sudo yum groupinstall "Development Tools" -y # 非必须 sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y2.下载Nginx wget http://n…

写个 flask todo app,简洁,实用

- 此项目虽然看起来简单&#xff0c;实际上&#xff0c;修改成自己喜欢的样子&#xff0c;也是费时间的。 - 别人都搞AI 相关的项目&#xff0c;而我还是搞这种基础的东西。不要灰心。 - 积累。不论项目大小&#xff0c;不论难易&#xff0c;只看是否有用。项目地址&#xff1a…

4麦 360度定位

要在 ESP32 上用 4 个麦克风实现 360 声源定位&#xff0c;通常思路是通过 时延估计&#xff08;TDOA&#xff09; 几何计算&#xff0c;核心流程&#xff1a;阵列布置将 4 个麦克风等间距布置成正方形&#xff08;或圆形&#xff09;。记阵列中心为原点&#xff0c;麦克风编号…

使用yolov10模型检测视频中出现的行人,并保存为图片

一、使用yolov10模型检测视频中出现的行人&#xff0c;并保存为图片&#xff0c;detect_person.py代码如下&#xff1a;from ultralytics import YOLOv10 import glob import os import cv2 import argparsedef detect_person(videoPath, savePath):if not os.path.exists(save…

现在希望用git将本地文件crawler目录下的文件更新到远程仓库指定crawler目录下,命名相同的文件本地文件将其覆盖

git checkout main git pull origin main $source “D:\黑马大数据学习\crawler” $dest Join-Path (Get-Location) “crawler” if (-not (Test-Path $dest)) { New-Item -ItemType Directory -Path $dest | Out-Null } Copy-Item -Path $source* -Destination $dest -Recur…

网络调制技术对比表

&#x1f4ca; 网络调制技术全维度对比表​调制技术​​简称​​频谱效率​​抗噪性​​功率效率​​复杂度​​关键特性​​典型应用场景​​幅度键控​ASK低差高低/低电路简单&#xff0c;易受干扰遥控器、光通信(OOK)​频移键控​FSK低-中中中中/中抗噪较好&#xff0c;频谱…

优化 Elasticsearch JVM 参数配置指南

一、概述 Elasticsearch 是基于 JVM 的搜索和分析引擎。JVM 参数的合理配置直接影响着 Elasticsearch 的性能和稳定性。尽管 Elasticsearch 已经提供了默认的 JVM 设置&#xff0c;但在某些特定场景下&#xff0c;我们可能需要进行适当的调整和优化。 本文将详细讲述如何安全、…

Python, Go 开发如何进入心流状态APP

要开发一款基于Python和Go语言、帮助用户进入“心流”状态&#xff08;高度专注、高效愉悦的心理状态&#xff09;的应用&#xff0c;需结合两种语言的技术优势&#xff08;Go的高并发与性能、Python的灵活性与AI生态&#xff09;及心流触发机制&#xff08;清晰目标、即时反馈…

一文详解手机WiFi模块与连接

目录 1 硬件模块 1.1 Wifi射频模 1.2 电源管理模块 2 软件与协议栈 2.1 系统服务层 2.2 认证与协议处理 3 连接流程 3.1 开启WiFi与扫描 3.2 选择网络与认证 3.3 连接与IP分配 4 特殊连接方式 4.1 WPS快速连接 4.2 热点模式&#xff08;AP模式&#xff09; 4.3 U…

Java 网络编程详解:从基础到实战,彻底掌握 TCP/UDP、Socket、HTTP 网络通信

作为一名 Java 开发工程师&#xff0c;你一定在实际开发中遇到过需要与远程服务器通信、实现客户端/服务端架构、处理 HTTP 请求、构建分布式系统等场景。这时&#xff0c;Java 网络编程&#xff08;Java Networking&#xff09; 就成为你必须掌握的核心技能之一。Java 提供了丰…

Java面试题(中等)

1. 计算机网络传输层有哪些协议&#xff1f;分别适用于什么场景&#xff1f;TCP协议(传输控制协议)​&#xff1a;面向连接、可靠传输&#xff0c;流量控制、拥塞控制。适用于要求数据完整性的场景&#xff0c;如文件传输、网页浏览、电子邮件等。UDP协议 (用户数据报协议)​&a…

Apache 消息队列分布式架构与原理

消息队列 基本概念 定义 消息队列&#xff08;Message Queue, MQ&#xff09;是一种分布式中间件&#xff0c;通过异步通信、消息暂存和解耦生产消费双方的机制&#xff0c;提供消息的顺序性保证、可靠投递和流量控制能力&#xff0c;广泛应用于微服务解耦、大数据流处理等场景…

ModernBERT如何突破BERT局限?情感分析全流程解析

自2018年推出以来&#xff0c;BERT 彻底改变了自然语言处理领域。它在情感分析、问答、语言推理等任务中表现优异。借助双向训练和基于Transformer的自注意力机制&#xff0c;BERT 开创了理解文本中单词关系的新范式。然而&#xff0c;尽管成绩斐然&#xff0c;BERT 仍存在局限…

股票Level2逐笔成交及十档订单簿分钟级Tick历史行情数据详细解析

本地股票数据处理与分析实战指南 在量化投资与金融数据分析领域&#xff0c;高效处理本地存储的股票数据是核心能力之一。本文将从数据类型定义、解析流程及实际应用角度&#xff0c;系统介绍如何基于CSV文件管理股票分钟数据、高频Tick数据、逐笔数据、Level2历史行情等多样化…