• 首页

  • 归档

  • 清单
    歌单 分类 标签

  • 心情

  • 画廊

  • 关于

  • 友链

  • 留言板
H i , X i a o y a o
H i , X i a o y a o

逍遥叹

那一年,我也变成了光!!

10
13
JVM调优

JVM内置故障排查工具:jinfo

发表于 2020-10-13 • jvm jvm调优工具 • 被 77 人看爆

作用

jinfo全称Java Configuration Info,主要用来查看与调整JVM参数。

TIPS

  • 此命令是实验性的,不受支持,对于JDK 9及更高版本,部分功能可使用 jhsdb jinfo 代替,也可用jcmd代替。
  • 部分JDK版本的jinfo命令对Windows支持比较有限,参数较少。本文为了更加接近生产环境,都是基于类Unix操作系统编写的。如果在Windows操作系统下测试,应以jinfo -h的结果为准。

参考文档:

  • Java 8 Unix:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jinfo.html
  • JDK 8 Windows:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jinfo.html
  • Java 11:https://docs.oracle.com/en/java/javase/11/tools/jinfo.html

使用说明

命令如下:

➜ jinfo -h
Usage:
    jinfo <option> <pid>
       (to connect to a running process)

where <option> is one of:
    -flag <name>         打印指定参数的值
    -flag [+|-]<name>    启用/关闭指定参数
    -flag <name>=<value> 将指定的参数设置为指定的值
    -flags               打印VM参数
    -sysprops            打印系统属性(笔者注:系统属性打印的是System.getProperties()的结果)
    <no option>          打印VM参数及系统属性
    -? | -h | --help | -help to print this help message

使用示例

查看参数

示例1:打印42342这个进程的VM参数及Java系统属性

jinfo 42342

示例2:打印42342这个进程的Java系统属性

jinfo -sysprops 42342

示例3:打印42342这个进程的VM参数

jinfo -flags 42342

示例4:打印42342这个进程ConcGCThreads参数的值

jinfo -flag ConcGCThreads 42342

扩展知识:要想查看JVM参数,也可在启动时,指定 -XX:+PrintFlagsFinal ,这样会在启动时将JVM参数打印到日志。

动态修改参数

示例5:将42342这个进程的PrintClassHistogram设置为false

jinfo -flag -PrintClassHistogram 42342

示例6:将42342这个进程的MaxHeapFreeRatio设置为80

jinfo -flag MaxHeapFreeRatio=80 42342

TIPS
虽然可用jinfo动态修改VM参数,但并非所有参数都支持动态修改,如果操作了不支持的修改的参数,将会报类似如下的异常:

Exception in thread "main" com.sun.tools.attach.AttachOperationFailedException: flag 'xxx' cannot be changed

使用如下命令显示出来的参数,基本上都是支持动态修改的:

java -XX:+PrintFlagsInitial | grep manageable
分享到:
JVM内置故障排查工具:jmap
JVM性能调优-理论篇:02-类加载过程详解
  • 文章目录
  • 站点概览
逍遥叹

小小程序员-逍遥叹

那一年,我也变成了光!!

Github QQ Email RSS
看爆 Top5
  • 为什么要写这篇博客? 362次看爆
  • 开发手记:Centos环境常用命令 353次看爆
  • 学习笔记:Java动态代理 305次看爆
  • 学习笔记:Java中的锁 292次看爆
  • Could not get JDBC Connection问题排查 282次看爆

Copyright © 2021 逍遥叹 · 粤ICP备17164804号-1

Proudly published with Halo · Theme by fyang · 站点地图