【Java可执行命令】(十七)JVM运行时信息动态维护工具 jinfo:一个维护 JVM 相关的配置参数和系统属性的工具,辅助故障排除、诊断和优化 ~

news2024/7/6 19:50:52

Java可执行命令之jinfo

  • 1️⃣ 概念
  • 2️⃣ 优势和缺点
  • 3️⃣ 使用
      • 3.1 语法格式
      • 3.2 -flags:查看进程的启动参数
      • 3.3 -sysprops:查看进程的系统属性
      • 3.4 -flag < name>:查看特定虚拟机参数的值
      • 3.5 -flag [+/-]< name>:启用或禁用特定虚拟机参数的值
  • 4️⃣ 应用场景
  • 🌾 总结

在这里插入图片描述

1️⃣ 概念

jinfoJava Development Kit (JDK) 自带的一款命令行工具。它旨在为用户提供进程的运行时信息,特别是与 Java 虚拟机 (JVM) 相关的配置和系统属性。jinfo 使得用户可以轻松地查看和修改正在运行的 Java 进程的参数,以便进行故障排除、诊断和优化

jinfo 允许用户动态查询和修改 JVM 的运行时信息,包括系统属性、堆参数、环境变量、启动参数等。通过与 JVM 内部通信,该工具提供了修改虚拟机参数的能力,而无需重启 JVM。这对于调试和优化应用程序的性能非常有用。

jinfo 实际上是通过 Java Debug Interface (JDI) 来与正在运行的 Java 进程进行通信。它利用 JVM 提供的调试接口,向目标进程发送请求并获取所需的信息。这些信息包括启动参数、系统属性和堆参数等。修改操作是通过向 JVM 发送相应的命令来完成的。

2️⃣ 优势和缺点

优点:

  • 提供了便捷方式来获取并更改正在运行的 Java 进程的运行时信息;
  • 可以直接与 JVM 通信并进行实时修改,而无需重启进程;
  • 具有简单易懂的命令行接口,方便使用和操作。

缺点:

  • 需要访问该进程所属用户的权限;
  • 使用不当可能导致进程崩溃或数据丢失;
  • 涉及到 JVM 内部信息,因此需要具备一定的 Java 和 JVM 知识。

3️⃣ 使用

3.1 语法格式

jinfo 命令的使用语法如下:

jinfo [option] <pid>
        (to connect to running process)(连接到正在运行的进程)
jinfo [option] <executable <core>
    	(to connect to a core file)(连接到核心文件)
jinfo [option] [server_id@]<remote server IP or hostname>
    	(to connect to remote debug server)(连接到远程调试服务器)

其中,当用作连接到正在运行的进程时,<pid> 可以指定要操作的 Java 进程ID。

当用作连接到核心文件时,<executable <core> 表示可执行核心转储文件,指定正在运行的 Java 进程的可执行核心转储文件路径。

当用作连接到远程调试服务器时,[server_id@] 表示可选的服务器标识符,用于指定目标远程服务器的 ID。 <remote server IP or hostname>用于指定远程服务器的 IP 地址或主机名,指定要连接和操作的远程 Java 进程。jinfo 通过远程调试协议与目标服务器进行通信,并获取所需的运行时信息。

option 是可选的命令行选项,允许指定要执行的操作类型。一些常见的选项包括:

可选参数说明
-flag <name>显示指定虚拟机参数(flag)的值
-flag [+|-] <name>启用或禁用指定虚拟机参数
-flag <name>=<value>设置指定虚拟机参数(flag)的值
-flags显示所有虚拟机参数(flags)及其值
-sysprops显示 Java 系统属性及其值
-h-help显示帮助信息,列出 jinfo 命令的使用示例和选项说明

总的来说,jinfo 命令有以下常见的用法:

  • jinfo -flags <pid>:查看进程的启动参数;
  • jinfo -sysprops <pid>:查看进程的系统属性;
  • jinfo -flag <name> <pid>:查看特定虚拟机参数的值;
  • jinfo -flag [+/-]<name> <pid>:启用或禁用特定虚拟机参数的值。

下面我们逐一详细介绍。

同时需要注意,jinfo 命令需要相应 Java 进程所属用户的权限才能访问和修改信息。而修改虚拟机参数可能会对应用程序产生意想不到的影响,请谨慎使用,确保已经了解虚拟机参数的含义和影响,以避免意外结果发生。

3.2 -flags:查看进程的启动参数

jinfo -flags <pid> 用于查看指定进程的启动参数。通过运行该命令,可以获取正在运行的 Java 进程的虚拟机参数(flags)及其对应的值。

当执行 jinfo -flags <pid> 命令时,它将与指定的 Java 进程进行通信,并返回该进程所使用的所有虚拟机参数及其当前设置的值。虚拟机参数包括启动类路径、堆大小、垃圾收集器类型等。

以下片段是输出的一部分:

Command line:  -Xmx1024m -Xms512m
…
Environmental variable: 
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_251
…
VM Flags:
-XX:CICompilerCount=4
-XX:InitialHeapSize=536870912
-XX:MaxHeapSize=1073741824
…

在上述示例中,我们可以看到进程的启动参数 -Xmx1024m -Xms512m,以及其他一些虚拟机参数的值。

使用 jinfo -flags <pid> 命令可以帮助了解正在运行的 Java 进程所使用的启动参数,这对于故障排除和性能优化非常有用。

3.3 -sysprops:查看进程的系统属性

jinfo -sysprops <pid> 用于查看指定进程的系统属性。通过运行该命令,可以获取正在运行的 Java 进程的系统属性及其对应的值。

当执行 jinfo -sysprops <pid> 命令时,它将与指定的 Java 进程进行通信,并返回该进程的所有系统属性及其当前设置的值。系统属性包括 Java 版本、操作系统名称、用户名称等。

以下是示例输出的一部分:

Command line: …
…
sun.java.command=com.example.MyApplication
java.home=/usr/lib/jvm/java-11-openjdk-amd64
…
os.name=Linux
os.version=5.4.0-42-generic
…
user.name=johndoe
…

在上述示例中,我们可以看到进程的一些系统属性,例如 sun.java.commandjava.homeos.nameuser.name 等。

使用 jinfo -sysprops <pid> 命令可以帮助了解正在运行的 Java 进程的系统属性,这对于了解环境配置和应用程序运行时信息非常有用。

3.4 -flag < name>:查看特定虚拟机参数的值

jinfo -flag <name> <pid> 命令用于查看特定虚拟机参数的值。通过运行该命令,可以获取正在运行的 Java 进程中特定虚拟机参数的当前设置值。

-flag <name>: 选项用于指定要查询虚拟机参数值的操作,并提供参数的名称。

运行命令后,将获得以下可能的输出情况:

  • 如果指定的虚拟机参数存在并且可以映射到该进程,则输出 <name>=<value> 的形式。其中,<name> 是虚拟机参数的名称,<value> 是该虚拟机参数的当前值。
  • 如果指定的虚拟机参数不存在或无法映射到该进程,则输出 Could not find the specified VM flag. 消息表示找不到指定的虚拟机参数。

假设我们要查看 Java 进程的 MaxHeapSize 虚拟机参数的值就可以照以下步骤操作:

  • 打开终端或命令提示符窗口,运行命令:jps,以获取正在运行的 Java 进程的进程 ID (PID);
  • 从输出中找到目标进程的 PID(例如,12345),记下这个值;
  • 使用命令 jinfo -flag MaxHeapSize 12345 来查看特定虚拟机参数的值。

在运行上述命令后,将得到以下可能的结果示例输出:

MaxHeapSize=512m

在上述示例中,我们可以看到目标 Java 进程的 MaxHeapSize 虚拟机参数的当前值为 512m

分析结果时,请注意以下几点:

  • 确保指定的虚拟机参数名称正确无误,并与实际应用程序使用的参数名称一致。
  • 检查虚拟机参数的值,了解当前的配置设置。根据需要,可以比较、调整和优化参数的值,以满足应用程序的需求。

请注意,确保 <pid> 是要查询的目标 Java 进程的有效进程 ID,并且具有足够权限来访问该进程的信息。

3.5 -flag [+/-]< name>:启用或禁用特定虚拟机参数的值

jinfo -flag [+/-]<name> <pid>jinfo 命令的一条选项,用于启用或禁用特定虚拟机参数的值。通过运行该命令,可以更改正在运行的 Java 进程中指定虚拟机参数的状态。

-flag [+/-]<name>: 选项用于指定要启用或禁用虚拟机参数的操作,并提供参数的名称。使用 “+” 号表示启用参数,使用 “-” 号表示禁用参数。<name> 是要启用或禁用的虚拟机参数的名称。

当执行 jinfo -flag [+/-]<name> <pid> 命令时,它将与指定的 Java 进程进行通信,并更改指定虚拟机参数的状态。

以下是示例输出:

Command line flags for process id: 12345:
-XX:+PrintGCDetails
-XX:MaxHeapSize=512m
…

在上述示例中,我们可以看到进程的特定虚拟机参数 -XX:+PrintGCDetails 已经被启用。要禁用该参数,可以运行 jinfo -flag -PrintGCDetails 12345

这是命令的使用方式。但请注意,在动态修改虚拟机参数时,存在一些限制和约束。某些参数可能需要在进程启动之前进行配置或重启进程才能生效。因此,在更改虚拟机参数之前,请务必参考相应的文档和建议,以避免可能产生的意外结果。

4️⃣ 应用场景

  • 调试:通过查看和修改虚拟机参数来分析和调试应用程序的性能问题;
  • 优化:通过修改虚拟机参数来改进应用程序的性能和资源利用率;
  • 监控:实时跟踪和记录 Java 进程的运行时信息,以便进行监控和分析。

🌾 总结

jinfo 是一款方便的工具,可用于在运行的 Java 进程中检索和修改运行时信息。它为用户提供了简单而直观的界面,使其可以轻松地查看和更改虚拟机参数。通过与 JVM 内部通信,它提供了实时性和灵活性,可以帮助开发人员进行调试、优化和监控应用程序。但是,需要小心使用,确保理解虚拟机参数的含义和影响,以避免潜在的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

查看gz文件 linux zcat file.gz mtx.gz

可以使用以下命令来查看 gz 压缩文件的内容&#xff1a; zcat file.gz 1 该命令会将 file.gz 文件解压并输出到标准输出&#xff0c;可以通过管道符将其与 grep 命令结合使用来查找需要的关键词&#xff0c;例如&#xff1a; zcat file.gz | grep keyword 1 该命令会将 file.gz…

JS进阶-Day4

&#x1f954;&#xff1a;流水不争先争滔滔不绝 JS进阶-Day1——点击此处&#xff08;作用域、函数、解构赋值等&#xff09; JS进阶-Day2——点击此处&#xff08;深入对象之构造函数、实例成员、静态成员等&#xff1b;内置构造函数之引用类型、包装类型等&#xff09; JS进…

【积水成渊】uniapp高级玩法分享

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人_python人工智能视觉&#xff08;opencv&#xff09;从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了&#xff1a; https://blog.csdn.net/lbcy…

iOS永久签名工具 - 轻松签使用教程

轻松签是一款IOS端免费的IPA签名和安装工具&#xff0c;最新版可以不用依赖证书对ipa永久签名&#xff0c;虽然现在用上了巨魔&#xff08;TrollStore&#xff09;- 是国外iOS开发人员opa334dev发布的一款工具&#xff0c;可以在不越狱的情况下&#xff0c;安装任何一款APP。 …

Tcp是怎样进行可靠准确的传输数据包的?

概述 很多时候&#xff0c;我们都在说Tcp协议&#xff0c;Tcp协议解决了什么问题&#xff0c;在实际工作中有什么具体的意义&#xff0c;想到了这些我想你的技术会更有所提升&#xff0c;Tcp协议是程序员编程中的最重要的一块基石&#xff0c;Tcp是怎样进行可靠准确的传输数据…

docker 配置 Mysql主从集群

Docker version 20.10.17, build 100c701 MySQL Image version: 8.0.32 Docker container mysql-master is source. mys ql-replica is replication. master source. replica slave.名称叫法不一样而已。 Choose one of the way&#xff0c;与replica同步数据两种情况&…

从 TCP/IP 到 CCIP:Chainlink 与合约的互联网

未来已来。通过链上金融重塑资本市场预计将影响全球价值 8.67 万亿美元的资产的使用方式。 Chainlink 的跨链互操作性协议&#xff08;CCIP&#xff09;将会这一转型过程中发挥重要作用&#xff0c;这是区块链连接性和互操作性的突破&#xff0c;使得 DeFi 应用可以通过单一界…

【Docker】Windows下docker环境搭建及解决使用非官方终端时的连接问题

目录 背景 Windows Docker 安装 安装docker toolbox cmder 解决cmder 连接失败问题 资料获取方法 背景 时常有容器方面的需求&#xff0c;经常构建调试导致测试环境有些混乱&#xff0c;所以想在本地构建一套环境&#xff0c;镜像调试稳定后再放到测试环境中。 Windows …

【SAP-MDG】MDG配置-激活事件类型链接 Activate Event Type Linkage

路径&#xff1a;MDGIMG→General Settings→Process Modeling→Workflow→Activate Event Type Linkage. 路径&#xff1a;MDGIMG→常规设置→流程建模→工作流→激活时间类型链接. MDG是自带工作流的&#xff0c;所以根据《MDG配置手册》中&#xff0c;是需要激活此功能的 第…

【Linux】结合Python 简易实现监控公司网站,邮件发送异常

目录 背景 实现思路 邮件4小时内只会发送一次&#xff0c;如果执行了发送邮件的脚本&#xff0c;就使用sed命令将对应的调用代码置为无效 请求脚本 Python邮件发送脚本 定时任务设置 恢复邮件发送能力脚本 资料获取方法 背景 由于一些原因&#xff0c;博主负责测试的网…

24届近5年重庆邮电大学自动化考研院校分析

今天给大家带来的是重庆邮电大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、重庆邮电大学 学校简介 重庆邮电大学简称"重邮"&#xff0c;坐落于直辖市-重庆市&#xff0c;入选国家"中西部高校基础能力建设工程”、国家“卓越工程师教育培养计划…

使用gitee创建远程maven仓库

1. 创建一个项目作为远程仓库 2. 打包项目发布到远程仓库 id随意&#xff0c;url是打包到哪个文件夹里面 在需要打包的项目的pom中添加 <distributionManagement><repository><id>handsomehuang-maven</id><url>file:D:/workspace/java/2023/re…

【Spring Boot】(三)深入理解 Spring Boot 日志

文章目录 前言一、日志文件的作用二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式 三、自定义日志输出3.1 日志框架3.2 日志对象的获取3.3 使用日志对象打印日志 四、日志级别4.1 日志级别的作用4.2 日…

vuejs源码分析之全局API(vm.$off)

vue在初始化的时候会给vue对象本身挂载一些全局的api。今天我们一个一个来看这些api。 vm.$off方法 这个方法是用来移除自定义事件监听器。 他的用法 vm.$off(event, calback)第一个参数event取值可以是string字符串&#xff0c;也可以是Array<string>也就是说既可以删…

mysql8查看执行sql历史日志、慢sql历史日志,配置开启sql历史日志general_log、慢sql历史日志slow_query_log

0.本博客sql总结 -- 1.查看参数 -- 1.1.sql日志和慢sql日志输出方式(TABLE/FILE)。global参数 SHOW GLOBAL VARIABLES LIKE log_output; -- 1.2.sql日志开关。global参数 SHOW GLOBAL VARIABLES LIKE general_log%; -- 1.3.慢sql日志开关。global参数 SHOW GLOBAL VARIABLE…

wpf 3d 坐标系和基本三角形复习

wpf 3d 坐标系的描述见此&#xff0c; WPF 3d坐标系和基本三角形_wpf 坐标系_bcbobo21cn的博客-CSDN博客 X轴正向向右&#xff0c;Y轴正向向上&#xff1b;Z轴&#xff0c;正向是从屏幕里边出来&#xff0c;负向是往屏幕里边去&#xff1b;坐标原点是在呈现区域的中心&#x…

TestDataLake在提升测试效能方面的实践

目录 1.背景 2.预期目标 3.系统设计和实现 3.1系统功能组成 3.2 数据智能生成 3.3 接口遍历测试 4.应用效果和收益 5.后续规划 1.背景 随着软件开发的迅速发展&#xff0c;测试数据管理变得越来越复杂。手动创建测试数据需要耗费大量时间和精力&#xff0c;同时容易出…

bigemap用于自然资源调查规划设计院

获取途径&#xff1a;之前看到别人使用我们软件&#xff0c;然后去我们官网下载地图体验了一下&#xff0c;想试试。买单点&#xff1a;影像清晰&#xff0c;最主要是使用手机端&#xff0c;跑外业&#xff0c;定位&#xff0c;记录轨迹&#xff0c;拍照&#xff0c;等高线制作…

网络安全进阶学习第十三课——SQL注入Bypass姿势

文章目录 一、等号被过滤二、substr、mid等被过滤三、逗号被过滤四、and/or被过滤五、空格被过滤五、其他绕过方式 一、等号被过滤 1、like&#xff0c;rlike语句&#xff0c;其中rlike是正则2、大于号>&#xff0c;小于号<3、符号<>&#xff1a;<>为不等于…

认识 spring AOP (面向切面编程) - springboot

前言 本篇介绍什么是spring AOP, AOP的优点&#xff0c;使用场景&#xff0c;spring AOP的组成&#xff0c;简单实现AOP 并 了解它的通知&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 什么是s…