Arthas中JVM相关命令详解

在Java开发中,经常需要对JVM进行诊断和调优。

Arthas是一款功能强大的Java诊断工具,它提供了丰富的命令来帮助用户查看和分析Java应用程序的运行状态。

本文将深入介绍Arthas中常用的JVM相关命令,以帮助大家更好地理解和使用Arthas。

1.  jvm—查看当前 JVM 的信息

# 查看当前 JVM 的信息
jvm
图片[1]-Arthas中JVM相关命令详解-不念博客

2. sysprop—查看和修改JVM的系统属性

2.1. 查看所有属性

#查看所有属性
sysprop
图片[2]-Arthas中JVM相关命令详解-不念博客

2.2. 查看指定属性

sysprop java.version
图片[3]-Arthas中JVM相关命令详解-不念博客

思考那么多属性,还都是英文的,我需要将注解全部记住?

不需要,查看单个属性,支持通过tab补全

图片[4]-Arthas中JVM相关命令详解-不念博客

2.3. 修改单个属性

-- 查看
$ sysprop user.country
user.country=US

-- 修改
$ sysprop user.country CN
Successfully changed the system property.
user.country=CN
图片[5]-Arthas中JVM相关命令详解-不念博客

3. sysenv—查看JVM的环境变量

3.1. 查看全部环境变量

sysenv
图片[6]-Arthas中JVM相关命令详解-不念博客

3.2. 查看指定环境变量

sysenv JAVA_HOME
图片[7]-Arthas中JVM相关命令详解-不念博客

4. vmoption—查看和修改JVM里诊断相关的启动参数

vmoption 命令在 Arthas 中用于查看和修改 JVM 启动选项。

JVM 启动选项是在 JVM 启动时设置的一系列参数,它们可以用于配置 JVM 的行为,例如堆大小、垃圾收集器类型、启用或禁用某些特性等。

可以理解为IDEA中的VM options

图片[8]-Arthas中JVM相关命令详解-不念博客

4.1. 查看全部option

vmoption
图片[9]-Arthas中JVM相关命令详解-不念博客

4.2.令修改 JVM 启动选项

设置最小堆空闲比例为30%

vmoption MinHeapFreeRatio 30
图片[10]-Arthas中JVM相关命令详解-不念博客

5. logger—查看和修改logger

5.1. 查看所有logger信息

logger

结果

 name                        ROOT
 class                       ch.qos.logback.classic.Logger
 classLoader                 jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
 classLoaderHash             2437c6dc
 level                       INFO
 effectiveLevel              INFO
 additivity                  true
 codeSource                  file:/D:/allsoftware/install/apache-maven-3.6.3/mvn_repo/ch/qos/logback/logback-classic/1.2.12/logback-classic-1.2.12.jar
 appenders                   name            CONSOLE
                             class           ch.qos.logback.core.ConsoleAppender
                             classLoader     jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
                             classLoaderHash 2437c6dc
                             target          System.out
图片[11]-Arthas中JVM相关命令详解-不念博客

说明

  • name: Logger对象的名称,这里是”ROOT”。
  • class: Logger对象所属类的全限定名,这里是ch.qos.logback.classic.Logger,表示使用Logback的Logger实现。
  • classLoader: Logger对象所属的类加载器。
  • classLoaderHash: 类加载器的哈希值。
  • level: Logger对象的日志级别,这里是INFO级别。
  • effectiveLevel: Logger对象的有效日志级别,表示实际应用的日志级别,这里也是INFO级别
  • additivity: 指示是否继承父Logger的appenders配置。
  • codeSource: Logger对象的代码来源,即该Logger对象所在的Jar文件路径。
  • appenders: Logger对象的附加器(Appender)配置,这里是一个ConsoleAppender,用于将日志输出到控制台。

5.2. 查看指定logger

logger –name [查找类的全路径]

logger -n org.springframework.web

结果

[arthas@20304]$ logger -n org.springframework.web
 name                        org.springframework.web
 class                       ch.qos.logback.classic.Logger
 classLoader                 jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
 classLoaderHash             2437c6dc
 level                       null
 effectiveLevel              INFO
 additivity                  true
 codeSource                  file:/D:/allsoftware/install/apache-maven-3.6.3/mvn_repo/ch/qos/logback/logback-classic/1.2.12/logback-classic-1.2.12.jar

5.3.  更新全局logger level

 logger --name ROOT --level debug

结果

[arthas@20304]$  logger --name ROOT --level debug
Update logger level success.

查看修改后的日志级别

[arthas@20304]$ logger level
 name                        ROOT
 class                       ch.qos.logback.classic.Logger
 classLoader                 jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
 classLoaderHash             2437c6dc
 level                       DEBUG
 effectiveLevel              DEBUG
 additivity                  true
 codeSource                  file:/D:/allsoftware/install/apache-maven-3.6.3/mvn_repo/ch/qos/logback/logback-classic/1.2.12/logback-classic-1.2.12.jar
 appenders                   name            CONSOLE
                             class           ch.qos.logback.core.ConsoleAppender
                             classLoader     jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
                             classLoaderHash 2437c6dc
                             target          System.out

5.4. 更新指定类日志级别

命令:logger -c [classLoaderHash的值] –name [查找类的全路径] –level [待更新的日志level]

  • 查看org.springframework.web的日志信息
logger   -n org.springframework.web
图片[12]-Arthas中JVM相关命令详解-不念博客
  • 修改org.springframework.web的日志级别
logger -c 2437c6dc  -n org.springframework.web --level debug

结果:发现日志级别修改为debug

图片[13]-Arthas中JVM相关命令详解-不念博客
© 版权声明
THE END